在SQL查询中格式化字符串电话号码的结果

时间:2018-11-07 11:24:40

标签: mysql sql mysqli

我需要格式化电话号码的查询结果,以便电话字符串具有国家/地区代码(如果尚未采用该格式)。

数据库(mysql)当前包含两种格式的电话号码。下面是表示电话号码的两种方式的示例:

  • 本地号码格式,以07开头。 0799123456

  • 国际格式,国家代码以+111开头,然后是7(7前面没有0),例如+111799123456

我希望查询结果是这样的:如果电话号码是本地号码格式,则电话号码应采用国际格式。例如,如果数字存储为0799123456,则查询结果应为+111799123456

选择手机 从客户c订购o 在哪里c.id = o.cust_id

问题:如果电话号码是本地格式,如何处理我的select语句以国际格式返回字符串?基本上,如果字符串中的数字以07开头(因此将07用+1117替换),我会尝试在+1117之前添加。

2 个答案:

答案 0 :(得分:1)

只需使用字符串函数:

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

答案 1 :(得分:0)

您可以在下面尝试

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