0

我正在尝试从表中的注释列中删除一些特殊字符。我使用了以下语句,但它似乎删除了']'即使它在^[not]列表中。

UPDATE TEST 
set comments=REGEXP_REPLACE(
               comments,
               '[^[a-z,A-Z,0-9,[:space:],''&'','':'',''/'',''.'',''?'',''!'','']'']]*',
               ' '
               );

表数据包含以下内容:

[SYSTEM]:Do you have it in stock? 😊

我的要求是:

[SYSTEM]:Do you have it in stock?
4

2 回答 2

1

你的正则表达式有两个错误:

  1. 不要将字符放在引号中,也不要用逗号分隔它们。
  2. 删除内部方括号。

并将右方括号放在列表中的第一个位置,就在最初的抑扬符之后。固定正则表达式:

UPDATE TEST set comments=REGEXP_REPLACE(comments,'[^]a-zA-Z0-9[:space:]&:/.?!]*',' ');
于 2016-05-17T06:24:22.363 回答
0

我的尝试,我只是删除了逗号,将“接受”字符放在最初的“不”之后(没有括号)。一个特殊情况是括号:https ://dba.stackexchange.com/a/109294/6228

select REGEXP_REPLACE(
         '[ION] are varză murată.',
         '[^][a-zA-Z0-9[:space:]&:/,.?!]+',
         ' ') 
from dual;

Result:
[ION] are varz  murat .
于 2016-05-17T07:14:29.957 回答