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

Mysql 在SQL查询中格式化字符串电话号码的结果,mysql,sql,Mysql,Sql,我需要格式化电话号码的查询结果,以便电话字符串具有国家代码(如果尚未采用该格式) DB MySQL当前包含两种格式的电话号码。以下是电话号码两种表示方式的示例: 本地数字格式,以07开头,例如0799123456 国际格式,国家/地区代码以+111开头,然后是7,7前面没有0,例如+111799123456 SELECT phone FROM customer c, order o WHERE c.id = o.cust_id 我希望查询结果能够确保电话号码是国际格式的,如果是本地号码格式的

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

DB MySQL当前包含两种格式的电话号码。以下是电话号码两种表示方式的示例:

本地数字格式,以07开头,例如0799123456

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

SELECT phone 
FROM customer c, order o
WHERE c.id = o.cust_id
我希望查询结果能够确保电话号码是国际格式的,如果是本地号码格式的话。例如,如果号码存储为0799123456,则查询结果应为+111799123456

SELECT phone 
FROM customer c, order o
WHERE c.id = o.cust_id

如果电话号码为本地格式,如何操作select语句以国际格式返回字符串?基本上,如果数字以07开头,我会尝试在+1117之前加上前缀,因此将字符串中的07替换为+1117。

只需使用字符串函数:

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
你可以在下面试试

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

OP想要concat+111而不是+1117,应该是SUBSTRINGphone,2100而不是3..最后一行这么说,用+1117替换07。将0替换为+111或将07替换为+1117反正是一样的。当然,这是一样的,但这一假设依赖于一个事实,即所有数字都以07开头-可能,今天可能是这样,但这不是未来证明所有数字都以07开头-我确实需要连接+111而不是+1117,既然7已经存在,我还是修改了答案。