sql查询中字符串电话号码的格式结果

ff29svar  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(436)

我需要格式化电话号码的查询结果,使电话字符串有一个国家代码,如果它还没有在该格式。
db(mysql)当前包含两种格式的电话号码。下面是电话号码的两种表示方式的示例:
本地号码格式,以07开头,例如0799123456
国际格式,以+111开始表示国家代码,然后是7(7前面没有0),例如+111799123456
我希望查询结果是这样的电话号码是国际格式,如果它是在本地号码格式。例如,如果号码存储为0799123456,则查询结果应为+111799123456
从客户c选择电话,订购o,其中c.id=o.cust\U id
问:如果电话号码是本地格式的,如何操作select语句以国际格式返回字符串?基本上,如果字符串中的数字以07开头,我会尝试在+1117前加上前缀(因此将07替换为+1117)。

rqcrx0a6

rqcrx0a61#

只需使用字符串函数:

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
r1zhe5dt

r1zhe5dt2#

你可以在下面试试

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

相关问题