我需要从Oracle中的字符串中删除字符 - ,+,(,)和空格。字符串中的其他字符都是数字。 可以执行此操作的功能是REGEXP_REPLACE。我需要帮助编写正确的正则表达式。
实施例: 字符串'23 +(67 -90'应返回'236790' 字符串'123456'应返回'123456'
答案 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是一个了不起的功能,可以节省大量时间来替换字母数字字符串中的字母表以转换为数字。