【问题标题】:MYSQL: replacing a phonenumber to add a countrycodeMYSQL:替换电话号码以添加国家代码
【发布时间】:2012-12-24 13:54:10
【问题描述】:

我有一张电话号码不正确的表格。
有些数字如下:06xxxxxxxx
其他人的数字如下:06-xxxxxxxx
我希望他们是这样的:+316xxxxxxxx

我的桌子:
用户 ID、电话号码、国家/地区

我当前的(非工作查询)查询:
更新帐号上午
SET am.phonenumber = REPLACE(am.phonenumber,'06','+316');

上述方法不起作用,因为如果有人有像 +31611061111 这样的号码 它也将被替换并变为 +31611+3161111

希望我的问题不要太复杂。
提前谢谢...

【问题讨论】:

    标签: mysql replace phone-number


    【解决方案1】:

    试试这个

    首先,更新以06-开头的数字。

    UPDATE account_number am 
    SET am.phonenumber = CONCAT('+316', SUBSTRING(am.phonenumber, 4)) 
    WHERE am.phonenumber LIKE '06-%';
    

    然后更新从 06 开始的那些。执行顺序在这里很重要。

    UPDATE account_number am 
    SET am.phonenumber = CONCAT('+316', SUBSTRING(am.phonenumber, 3)) 
    WHERE am.phonenumber LIKE '06%';
    

    【讨论】:

    • 这很好用,非常感谢你.. 尝试使用子字符串但无法让它正常工作。再次感谢
    • 我想我必须首先使用:UPDATE account_number am SET am.phonenumber = REPLACE(am.phonenumber,'-','');,因为我在其他地方发现了更多带有“-”的电话号码,然后使用上面的第二个 UPDATE。应该这样做
    【解决方案2】:

    试试类似的东西

    UPDATE account_number am
    SET am.phonenumber = '+316' + Substring(am.phonenumber,3,Length(am.phonenumber) - 2)
    where am.phonnumber like '06%'
    

    【讨论】:

    • 我也试过这个,似乎我的 mysql 客户端在 DataLength 抱怨它不存在时遇到了困难
    • oops 我的 T-sql 头在 mysql 中的长度
    【解决方案3】:

    您可以使用WHERE 子句匹配仅以 06 开头的数字(如果这是您所追求的)。要实现这一点,请使用LIKE

    【讨论】:

    • 那仍然会填满 '06906067' 等。
    • 您将只对以 06xxxxxxx 开头的数字执行更新。这是我的问题,如果这是唯一的要求。如果没有,请列出您的所有要求,应该更新哪些数字,哪些不应该
    • 06906067 确实以 06 开头,所以如果不进一步扩展,您的回答将导致 +3169+316+3167,这是我的观点,而不是 OP...
    猜你喜欢
    • 2015-01-19
    • 1970-01-01
    • 2017-11-22
    • 2021-10-03
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2013-05-24
    相关资源
    最近更新 更多