2017-05-31 5 views
0

は、私は正規表現'\b<word>\b'によって特定の単語の存在のための文字列をチェックしてみましたが、\bアンカーがREGEXP_SUBSTRでは動作しないようです:例えばチェック

単語を確認するABC

SELECT REGEXP_SUBSTR ('A, AB, ABC,ABCD', '\bABC\b') FROM DUAL; 

ただし、結果は(null)です。私が間違っていることは何ですか?

+0

何を '\ B'とやりたいんスペースを続けることができることを意味しますか?たとえば 'xABC'、' ABCy'、 'xABCY'を除いて、' ABC'だけを取得すればいいのですか? – Aleksej

+0

はい、私は単語「ABCD」の一部として文字列「ABC」ではなく、単語「ABC」のために私の場合は全体の単語をチェックしたいと思います。 – shaf

答えて

0

文字列に指定された単語が正確に含まれているかどうかを確認するには、文字列内の2つの単語を区切ることができる文字のみがカンマとスペースであると仮定すると、どのように動作する

SELECT 1 from dual 
where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$|)') 

:文字列の先頭と末尾に

(^| |,)は単語がコンマまたはスペースで、何もない(文字列の先頭)が先行することによってできることを意味します。

は同様(,|$|)は単語がコンマ、何も(文字列の末尾)または

+0

ありがとう、それは動作します!しかし、なぜ私は単語の境界位置に一致するために '\ b'アンカーを使うことができません:' \ bABC \ b'? – shaf