重写查询以使用单个类似regexp_的运算符

重写查询以使用单个类似regexp_的运算符,regex,oracle,Regex,Oracle,有人能帮我用类似regexp_的操作符写同样的查询吗?请用hr.employees 感谢大家的宝贵回复。非常简单: regexp_like(Last_name, 'a') and regexp_like(Last_name, 'e') and regexp_like(Last_name, 's') 如果你真的想要一条线,你就得走了 regexp_like(last_name, '(a.*b.*c)|(a.*c.*b)|(b.*a.*c)|(b.*c.*a)|(c.*a.*b)|(c.*b

有人能帮我用类似regexp_的操作符写同样的查询吗?请用hr.employees

感谢大家的宝贵回复。

非常简单:

regexp_like(Last_name, 'a') and 
regexp_like(Last_name, 'e') and 
regexp_like(Last_name, 's') 

如果你真的想要一条线,你就得走了

regexp_like(last_name, '(a.*b.*c)|(a.*c.*b)|(b.*a.*c)|(b.*c.*a)|(c.*a.*b)|(c.*b.*a)')
这很难理解。 我建议你对喜欢和不喜欢的人使用你最初的方法

Oracle正则表达式很简单,不提供正面的lookaheads,这使得它在javascript中很简单。在javascript中,这将是

^(?=.*a)(?=.*b)(?=.*c)

谢谢,但是有没有其他方法可以使用一次类regexp_操作符而不是三次。我喜欢其他人最初误读为是或代替AND。您正在使用的查询似乎是正确的方法,并且您不需要像REGEXP\u这样的查询。您可能只想从解决方案中学习一些东西,但是。Leading/training.*会使匹配变慢,请删除它们。类REGEXP|u不需要完整的字符串匹配,因此'a.*b.*c.*a.*c.*b.*a.*c.*b.*c.*a.*b.*a'就足够了。
^(?=.*a)(?=.*b)(?=.*c)