【问题标题】:How do I remove spaces from phone numbers in MySQL如何从 MySQL 中的电话号码中删除空格
【发布时间】:2020-09-07 07:29:37
【问题描述】:

我正在尝试从 MySQL 数据库中的电话号码中删除空格,并且我使用了一个非常简单的查询来使用以下 case 语句去除空格:

SELECT 
    CASE
        WHEN TEL_NUMBER like '% %' THEN REPLACE(TEL_NUMBER,' ','') 
        ELSE TEL_NUMBER 
    END AS TEL_NUMBER
FROM
     TEST_TABLE
;

但是当我开始查看表格时,我注意到在某些行中显示了 2 个数字,这些数字现在显示的数字与我删除空格时的数字一样长,如下所示:

01234567830017431234567

所以我的问题是如何替换 1 个电话号码之间的空格,以及尝试用“/”替换 2 个号码之间的空格,或者甚至保留 2 个号码之间的空格。

以下一些是我所拥有的场景类型的示例:

07979871234 01324 456 789
01403123456 01403123587
01747 456789 07813456789
01502 123456 01502 456789

如果有人能建议我如何解决这个问题,我将不胜感激。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以替换所有空格并将其放回位置 12

    INSERT(REPLACE(number, ' ', ''), 12, 0, ' ')
    

    这个INSERT的意思是“在这个字符串中例如01234567830017431234567”,在位置12,删除0个字符,然后插入一个空格-> 01234567830 017431234567

    如果你想要一个斜线,改变你插入的字符串

    请注意,电话号码可能并不总是 11 位数长。我必须在我们的一个系统中使用英国电话号码,例外情况有点麻烦。

    您可能最好查找在您的电话号码最短之后的空格索引,或者最长电话号码可能与其空格之后的最短空格索引(即从位置 9 或 10 开始搜索)并插入斜线,然后删除所有空格

    REPLACE(INSERT(number, LOCATE(number, ' ', 9), 0, '/'), ' ', '')
    

    对您的所有数据进行播放和微调;如果您发现某个子集出现问题,您可以随时更新它

    【讨论】:

    • 非常感谢你们俩,会试一试,然后再回复您。
    • 谢谢你们,非常有用的答案,因为他们都工作并给了我想要的东西。
    【解决方案2】:
    SELECT 
        concat(substring(replace(TEL_NUMBER, ' ', ''), 1, 11) ,' ', substring(replace(TEL_NUMBER, ' ', ''), 12, 11)) AS TEL_NUMBER
    FROM
         TEST_TABLE
    

    SELECT 
        concat(substring(replace(TEL_NUMBER, ' ', ''), 1, 11) ,'/', substring(replace(TEL_NUMBER, ' ', ''), 12, 11)) AS TEL_NUMBER
    FROM
         TEST_TABLE
    

    【讨论】:

      猜你喜欢
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 2021-02-06
      • 2011-02-12
      • 1970-01-01
      相关资源
      最近更新 更多