#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