2017-09-26 114 views
-2

查詢:如何在oracle regexp_like()中做一個負面的lookahead(),'?!'不工作

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

上面的查詢不返回我1。請讓我知道如何使用oracle regexp_like()實現負向預測。

注意:請不要在查詢中提出任何更改,我有興趣知道regexp_like()接受負面預測的正確正則表達式。另外[^]似乎只是按字符否定字符,而不是整個字符串。

+1

不知道這是否是你想要的,但如果你想爲了否定值,請嘗試:'a [^ b]' –

+2

Oracle Regexp不支持超前觀察。 –

+0

我的疑問是如果我不得不排除一個字符串而不是一個字符? – user2907301

回答

2

Oracle不支持前瞻正則表達式 - 而不是你可以檢查下一個字符不是要排除一個:

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

[^]僅用於否定單個字符。如果我想否定一個字符串呢? 從雙重選擇1「val」,其中regexp_like('ICON HEIGHT','^([^ ICON]。* HEIGHT)');不符合我否定'ICON HEIGHT'的目的,因爲它不是以單個字符串逐個字符。這有什麼解決方案? – user2907301

+0

從regexp_like('IA HEIGHT','^([^ ICON]。* HEIGHT)')中選擇1「val」應該返回我1,但它不會因爲^只會否定單個字符。 – user2907301