2016-05-17 10 views
0

テーブルのコメント列から少数の特殊文字を削除しようとしています。私は以下のステートメントを使用しましたが、^[not]のリストにあるにもかかわらず、']'が削除されているようです。regex_replaceを使用して特殊文字を削除するときに "]"を置換しない方法

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? 

答えて

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 . 
+0

ありがとう、これは私のために働いた! –

1

あなたはあなたに2つのミスを持っているとregex:

  1. はしないでください文字を引用符で囲み、カンマで区切ってはいけません。
  2. 内側の角括弧を削除します。

最初のサーカンフレックスの直後に、リスト内の角かっこを最初に囲みます。固定正規表現:

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

この実行表示される各文字の後にスペースとも正面から「[」除去: 特殊なケースは括弧です。しかし、私は少しそれを微調整し、それは私のために働いた。ご協力いただきありがとうございます! –

関連する問題