在ORACLE SQL中用一行替换多个字符

时间:2015-04-20 22:30:17

标签: sql oracle replace oracle-sqldeveloper

我在表格中有一个电话号码和邮政编码字段。我试图将这些信息变成一种通用格式,我想摆脱所有额外的垃圾,如破折号,括号,空格和字母。

我想知道是否有办法用替换功能做到这一点,我尝试过类似于如何在REGEXP_LIKE()中运行,并且没有运气,这就是我所拥有的。

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

如果没有办法做到这一点那很好,我只是想避免为我想要替换的所有内容制作一大堆替换语句。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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