在oracle中使用常规exp来删除一组代码

时间:2017-07-05 07:37:29

标签: regex oracle

我在Oracle表中有一个列,它有许多值,其中包含一组代码,如下所示:

(5000311520)智能电视40英寸+电影/互联网(高速)

现在我要删除代码:(5000311520)

这意味着结果应该是:智能电视40英寸+电影院/互联网(高速)

任何人都可以帮助我吗? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

要选择您感兴趣的部分,可以尝试以下SELECT语句:

SELECT REGEXP_REPLACE(yourColumn, '\([[:digit:]]+\) (.*)', '(\1)') AS result 
  FROM yourTable;

答案 1 :(得分:0)

要在开头选择没有数字代码:

select REGEXP_REPLACE(Comments,'^\([0-9]+\)\s*','') from Table1

解释正则表达式:

^       : start of the text
\(      : a literal '(' character
[0-9]+  : 1 or more digits from 0 to 9
\)      : a literal ')' character
\s*     : 0 or more whitespaces (spaces, tabs, linefeeds, ...)

永久地从列值中删除代码?
您也可以在where子句中使用此类正则表达式:

update Table1
set Comments = REGEXP_REPLACE(Comments,'^\([0-9]+\)\s*','')
where REGEXP_LIKE(Comments,'^\([0-9]+\)')