Oracle PL / SQL中的正则表达式从包含电话号码的字符串中删除不需要的字符

时间:2012-10-23 00:21:12

标签: regex string oracle plsql replace

我需要从Oracle中的字符串中删除字符 - ,+,(,)和空格。字符串中的其他字符都是数字。 可以执行此操作的功能是REGEXP_REPLACE。我需要帮助编写正确的正则表达式。

实施例: 字符串'23 +(67 -90'应返回'236790' 字符串'123456'应返回'123456'

3 个答案:

答案 0 :(得分:6)

这样的东西
SQL> ed
Wrote file afiedt.buf

  1  with data as (
  2    select 'abc123def456' str from dual union all
  3    select  '23+(67 -90' from dual union all
  4    select '123456' from dual
  5  )
  6  select str,
  7         regexp_replace( str, '[^[:digit:]]', null ) just_numbers
  8*   from data
SQL> /

STR          JUST_NUMBERS
------------ --------------------
abc123def456 123456
23+(67 -90   236790
123456       123456

应该这样做。这将删除字符串中的任何非数字字符。

答案 1 :(得分:0)

搜索\D[\-\+, ]并替换为空字符串''

答案 2 :(得分:0)

regexp_replace是一个了不起的功能,可以节省大量时间来替换字母数字字符串中的字母表以转换为数字。