格式化国际电话号码

时间:2014-12-03 13:28:47

标签: sql phpmyadmin format substring vtiger

我已经找到了“How to format a numeric column as phone number in SQL”,但它只是毁掉了我的号码。

我有一个类似064184335的电话号码,并希望将其格式化为+49 641 84335

我试过了:

UPDATE vtiger_contactdetails
    SET phone = '+49' +' '+ SUBSTRING(phone, 2, 2 ) + ' ' + SUBSTRING(phone, 4, 3)

但我得到295作为电话号码。 此外,第二个3中的SUBSTRING应该是电话号码的其余部分。

如果我想更改不同表格中的每个电话号码,请不要使用:

UPDATE vtiger_account, vtiger_contactdetails, vtiger_contactsubdetails
SET vtiger_account.phone = CONCAT('+49', ' ', SUBSTRING(vtiger_account.phone, 2, 3 ), ' ', SUBSTRING(vtiger_account.phone, 5, length(vtiger_account.phone)))
SET vtiger_account.otherphone = CONCAT('+49', ' ', SUBSTRING(vtiger_account.otherphone, 2, 3 ), ' ', SUBSTRING(vtiger_account.otherphone, 5, length(vtiger_account.otherphone)))
SET vtiger_contactdetails.phone = CONCAT('+49', ' ', SUBSTRING(vtiger_contactdetails.phone, 2, 3 ), ' ', SUBSTRING(vtiger_contactdetails.phone, 5, length(vtiger_contactdetails.phone)))
SET vtiger_contactdetails.mobile = CONCAT('+49', ' ', SUBSTRING(vtiger_contactdetails.mobile, 2, 3 ), ' ', SUBSTRING(vtiger_contactdetails.mobile, 5, length(vtiger_contactdetails.mobile)))
SET vtiger_contactsubdetails.homephone = CONCAT('+49', ' ', SUBSTRING(vtiger_contactsubdetails.homephone, 2, 3 ), ' ', SUBSTRING(vtiger_contactsubdetails.homephone, 5, length(vtiger_contactsubdetails.homephone)))
SET vtiger_contactsubdetails.otherphone = CONCAT('+49', ' ', SUBSTRING(vtiger_contactsubdetails.otherphone, 2, 3 ), ' ', SUBSTRING(vtiger_contactsubdetails.otherphone, 5, length(vtiger_contactsubdetails.otherphone)))
SET vtiger_contactsubdetails.assistantphone = CONCAT('+49', ' ', SUBSTRING( vtiger_contactsubdetails.assistantphone, 2, 3 ), ' ', SUBSTRING( vtiger_contactsubdetails.assistantphone, 5, length( vtiger_contactsubdetails.assistantphone)))

如何忽略已格式化的数字?

2 个答案:

答案 0 :(得分:0)

我猜你正在使用MySQL。连接字符串的方法是concat()

UPDATE vtiger_contactdetails
    SET phone = CONCAT('+49', ' ', SUBSTRING(phone, 2, 2 ), ' ', SUBSTRING(phone, 4, 3));

要获取所有字符,只需使用SUBSTRING()的两个参数:

UPDATE vtiger_contactdetails
    SET phone = CONCAT('+49', ' ', SUBSTRING(phone, 2, 2 ), ' ', SUBSTRING(phone, 4));

请注意,这适用于MySQL,但不适用于所有数据库。

答案 1 :(得分:0)

尝试修改后的查询:

SELECT '+49' +' '+ SUBSTRING('064184335', 2, 3 ) + ' ' 
    + SUBSTRING('064184335' , 5, 5)

仅使用+进行更新:

  UPDATE vtiger_contactdetails
    SET phone = '+49' +' '+ SUBSTRING(phone, 2, 3 ) + ' ' 
        + SUBSTRING(phone , 5, 5)

使用CONCAT

UPDATE vtiger_contactdetails
    SET phone = CONCAT('+49', ' ', 
    SUBSTRING(phone, 2, 3 ), ' ', SUBSTRING(phone, 5, 5))