#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:
Комментарии:
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. Пожалуйста. Смотрите Мой обновленный ответ для лучшего решения с использованием виртуального столбца 😉