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

Replace multiple characters with a single line in ORACLE SQL

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

我想知道是否有一种方法可以使用替换函数来执行此操作,我尝试使用与 REGEXP_LIKE() 中的方法类似的方法进行操作,但没有成功,这就是我所拥有的。

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

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

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

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

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

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

我知道这些示例不适用于邮政编码和 phone 数字,但我认为它们可能对您有所帮助。