Добавляйте дефис в строку после каждых 2 символов, используя в mysql инструкцию select

#mysql #sql

#mysql #sql

Вопрос:

У меня есть таблица mysql с некоторыми данными. В этом случае у меня есть столбец (mobile_number), и значение этого столбца похоже на номер мобильного телефона (например, 1234587920).

мой ожидаемый результат: 12-34-58-79-20

Я хочу добавлять дефис после каждых двух чисел.

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

1. Это не запятая

2. Кажется, гораздо разумнее делать такого рода вещи на уровне представления

Ответ №1:

используйте concat() для объединения строк и используйте substr() для разделения строки в mysql :

разделение (столбец, начало, количество) выберите столбец из начальной позиции для параметра count

объединение (column1,»-«,column2) будет column1-column2

 SELECT CONCAT(SUBSTR(phone,1,2),'-',SUBSTR(phone,3,2),'-',SUBSTR(phone,5,2),'- 
',SUBSTR(phone,7,2),'-',SUBSTR(phone,9,2)) FROM `table`
  

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

1. не судите строго. Вовсе нет

2. спасибо esnkrimi….. И я хотел бы задать еще одно сомнение .. если я не знаю, сколько у меня чисел (т. Е. Длина строки), на данный момент у меня есть 10 цифр, поэтому я ставлю как статический, но если это динамический, каким было бы решение?

Ответ №2:

Я бы определенно использовал concat_ws() для этого:

 select concat_ws('-',
                 substr(mobile_number, 1, 2),
                 substr(mobile_number, 3, 2),
                 substr(mobile_number, 5, 2),
                 substr(mobile_number, 7, 2)
                )
  

Здесь используется db<>fiddle.

Ответ №3:

это сработает:

 SELECT concat(SUBSTRING("1234587920", 1, 2),"-",SUBSTRING("1234587920",3,2),"- 
",SUBSTRING("1234587920", 5, 2),"-",
SUBSTRING("1234587920", 7, 2),"-",
SUBSTRING("1234587920", 9, 2)) AS ExtractString;
  

для вашей таблицы запрос выглядит следующим образом :

 SELECT concat(SUBSTRING(mobile_number, 1, 2),"- 
",SUBSTRING(mobile_number,3,2),"-",SUBSTRING(mobile_number, 5, 2),"-",
SUBSTRING(mobile_number, 7, 2),"-",
SUBSTRING(mobile_number, 9, 2)) ExtractString from tablename;
  

Ответ №4:

вы можете использовать substr и команду contact_ws в mysql

 update tmp_pay SET   date_fix  = concat_ws('-',substr(date_at,1,4),substr(date_at,5,6),'01') ;
  

Ответ №5:

вы можете попробовать это

 select concat( right(phone_number,3) , "-" , mid(phone_number,4,3) , "-", right(phone_number,4)) from table