【问题标题】:Replace multiple characters with a single line in ORACLE SQL在 ORACLE SQL 中用单行替换多个字符
【发布时间】:2015-04-20 22:30:17
【问题描述】:

我在表格中有一个电话号码和邮政编码字段。我正在尝试将这些信息转换为通用格式,并且我想去掉所有多余的垃圾,如破折号、括号、空格和字母。

我想知道是否有一种方法可以使用替换功能来做到这一点,我尝试以类似于在 REGEXP_LIKE() 中的方式进行操作并且没有运气,这就是我所拥有的。

select (REPLACE(numbers.PHONE,'[a-zA-Z._-%() ]',''))
from table numbers;

如果没有办法做到这一点也没关系,我只是想避免为我想要替换的所有内容创建一大堆替换语句。

【问题讨论】:

标签: sql oracle replace oracle-sqldeveloper


【解决方案1】:

这取决于您的邮政编码和手机中有多少垃圾。例如,您可以使用以下替换方式删除这些字段中的所有非数字字符:

SELECT REGEXP_REPLACE('234N2&.-@3NDJ23842','[^[:digit:]]+') FROM DUAL

然后你可以用这样的替换来格式化结果数字:

SELECT REGEXP_REPLACE('2342323842','([[:digit:]]{3})([[:digit:]]{3})([[:digit:]]{4})','\1 \2 \3') FROM DUAL

我知道这些示例不能用作邮政编码或电话号码,但我认为它们可能会对您有所帮助。

【讨论】:

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