2017-09-26 13 views
-2

クエリを動作していない:oracle regexp_like()、 '?!'で否定的な先読みを行う方法

select 1 "val" from dual where regexp_like('ITEM HEIGHT','^(?!ICON).*HEIGHT$'); 

は、上記のクエリは私に1を返しません。 oracle regexp_like()を使用して否定的な先読みを達成する方法を教えてください。

注:照会の変更を提案しないでください。否定先読みに対してregexp_like()で承認された正しい正規表現を知りたいと考えています。また、[^]は文字だけではなく、文字列全体ではないように見えます。

+1

、しかし、あなたはしたい場合値を無効にするには、次のようにします。 'a [^ b] –

+2

Oracle Regexp'sは先読みをサポートしていません。 –

+0

文字の代わりに文字列を除外しなければならないと疑いがありますか? – user2907301

答えて

2

Oracleは、正規表現で先読みをサポートしていません - 代わりにあなただけの次の文字が除外したいものではありません確認することができます。それはあなたが何をしたいのですかどうかわからない

select 1 "val" 
from dual 
where regexp_like('ac','a([^b]|$)'); 
+0

[^]は、単一の文字を無効にするためにのみ使用されます。文字列を無効にしたい場合はどうすればよいですか? regexp_like( 'ICON HEIGHT'、 '^([^ ICON]。* HEIGHT)')の2つの場所から1 "val"を選択します。キャラクターごとに1つの文字列ではないので、「ICON HEIGHT」を否定する私の目的には役立たない。これに対する解決策は何ですか? – user2907301

+0

regexp_like( 'IA HEIGHT'、 '^([ICON]。* HEIGHT)')の二重から1を選択します。私は1を返すべきですが、^は1文字しか否定しないからです。 – user2907301

関連する問題