2017-09-26 61 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