Форматирование результатов строкового номера телефона в запросе SQL - PullRequest
0 голосов
/ 07 ноября 2018

Мне нужно отформатировать результаты запроса телефонных номеров, чтобы в телефонной строке был код страны, если он еще не находится в этом формате.

БД (mysql) в настоящее время содержит номера телефонов в двух форматах. Ниже приведен пример двух способов представления номера телефона:

  • формат локального номера, который начинается с 07, например 0799123456

  • международный формат, который начинается с +111 для кода страны, затем 7 (без 0 перед 7), например, + 111799123456

Я хочу, чтобы результаты запроса были такими, чтобы номер телефона был в международном формате, если он был в формате локального номера. Например, если номер был сохранен как 0799123456, результат запроса должен быть + 111799123456

ВЫБРАТЬ телефон ОТ клиента c, заказ o ГДЕ c.id = o.cust_id

Вопрос: как мне манипулировать моим оператором select, чтобы вернуть строку в международном формате, если номер телефона в местном формате? В основном я пытаюсь добавить +1117, если число начинается с 07 (поэтому замените 07 на +1117) в строке.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вы можете попробовать ниже

select case when left(phone,2)='07' then 
concat('+1117',substring(phone,3,length(phone)-2)) else phone end as newphone
FROM customer c join `order` o WHERE c.id = o.cust_id
0 голосов
/ 07 ноября 2018

Просто используйте строковые функции:

SELECT CASE
    WHEN phone LIKE '07%' THEN INSERT(phone, 1, 1, '+111')
    ELSE phone
END AS phone_formatted
FROM (
    SELECT '0799123456' AS phone UNION
    SELECT '+111799123456'
) x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...