REGEXP Oracle SQL

时间:2016-10-05 12:52:35

标签: sql regex oracle

我有一个clob field rq_dev_comments,应该用“匿名”替换用户名

Update <TABLE>.req 
   Set rq_dev_comments = regexp_REPLACE(rq_dev_comments, 
   '\<[bB]\>.*gt;,', '<b>anonymous ') 
   where length(rq_dev_comments) > ...

现在我的问题是,如果有一种方法可以检查“anonymous”是否已经设置,以及如何减少数据集?

示例:

rq_dev_comments = "<html><b>HendrikHeim</b>: I found an error....</html>"

所需:"<html><b>Anonymous</b>: I found an error....</html>"

1 个答案:

答案 0 :(得分:1)

以下解决方案不会捕获“用户名”可能出现多次的情况,有些但并非所有事件都已被“匿名”替换。所以在使用之前要三思而后行。 (同样适用于你所要求的任何解决方案!)

将以下内容添加到WHERE子句中:

... where length(...) ....
      and dbms_lob.instr(rq_dev_comments, '<b>Anonymous') = 0

“= 0”表示在输入字符串中找不到搜索模式。

另一件事:在示例中,您显示“匿名”大写(大写A),但在您的代码中,您将全部小写。决定这种或那种方式并保持一致。祝你好运!