Вставить «-» после третьего символа для всего столбца в SQL

#mysql #sql

#mysql #sql

Вопрос:

У меня есть столбец (имя — это заголовок столбца) с 8 символьными номерами. Я ищу запрос для вставки «-» после третьего символа каждой строки данных.

Например, если у меня есть:

 |   Name   |
|----------|
| 99912345 | 
  

Я хочу получить:

 |   Name    |
|-----------|
| 999-12345 |
  

Я попробовал следующее:

 SELECT INSERT(name, 3, 0, "-");
  

База данных, которую я использую, называется temp.Test1 в MySQL

Комментарии:

1. Пометьте свой вопрос базой данных, которую вы используете.

2. Я добавил его, спасибо

3. @Starbucks, он имеет в виду пометку, используете ли вы mysql, postgres, mssql и т. Д.

Ответ №1:

Вы были близки:

 SELECT INSERT(name, 4, 0, '-') from mytable
  

Вот демонстрация:

ДЕМОНСТРАЦИЯ

Комментарии:

1. Мне очень интересно, почему это не выбрано как правильный ответ? Спасибо @Starbucks за ответ.

2. Это сработало, но для моего экземпляра я хотел избежать инструкции insert (моя ошибка в том, что я не упомянул), поэтому я использовал функцию sub string, а затем объединил ее вместе. Спасибо вам все же!

3. Хорошо, я знаю, что это работает…. Еще раз спасибо за объяснение…

Ответ №2:

В MySQL используется substring для разделения вашего значения и concat объединения его обратно.

 set @test = 99912345; 

select concat(
  substring(@test, 1, 3),
  '-',
  substring(@test, 4)
);
  

дает 999-12345


Редактировать: вы также можете создать виртуальный столбец, который сделает это за вас, и просто получить столбец в вашем приложении.

 alter table `test1`
add `formattedName` varchar(9) as (
  concat(
    substring(`name`, 1, 3),
    '-',
    substring(`name`, 4)
  )
);
  
 select `formattedName` from `test`
  

Смотрите демонстрацию

Комментарии:

1. Пожалуйста. Смотрите Мой обновленный ответ для лучшего решения с использованием виртуального столбца 😉