【问题标题】:PL/SQL Remove unwanted characters from a phone numberPL/SQL 从电话号码中删除不需要的字符
【发布时间】:2014-09-18 00:30:06
【问题描述】:

我环顾四周,似乎找不到这个问题的直接答案。我对如何做到这一点感到困惑。我应该使用正则表达式还是有更好的方法来做到这一点。

我有一个程序可以根据电话号码的开头和长度来格式化电话号码。我希望能够在格式化之前先清理电话号码。所以我的导师输入了一个看起来像这样的电话号码

07A3345&6543

我想在格式化之前从电话号码中删除 A 和 &。

谢谢

【问题讨论】:

    标签: sql regex plsql


    【解决方案1】:

    您可以使用translate() 执行此操作。一种方法是明确说明您要删除的内容:

    select translate(phone, '0123456789', '0123456789A&')
    

    另一种方法是更聪明,只保留数字:

    select translate(phone, '0123456789' || translate(phone, 'a0123456789', 'a'), '0123456789')
    

    这将删除所有非数字字符。

    【讨论】:

      【解决方案2】:

      如果你只需要删除非数字字符,你可以试试这个:

      TRANSLATE(phone,'0123456789'||phone,'0123456789')
      

      这会将字符09 映射到它们自己,并将电话号码中的任何其他字符映射到nothing——实际上是丢弃它们。

      举个例子:

      DECLARE
        phone VARCHAR(20) := '07A3345&6543';
      BEGIN
        DBMS_OUTPUT.PUT_LINE(TRANSLATE(phone,'0123456789'||phone,'0123456789'));
      END
      

      将显示:

      0733456543
      

      【讨论】:

        猜你喜欢
        • 2012-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-26
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        • 2020-03-29
        相关资源
        最近更新 更多