重写查询以使用单个regexp_like运算符

时间:2018-06-22 12:26:15

标签: regex oracle

任何人都可以帮助我使用regexp_like运算符编写相同的查询。(请使用hr.employees

Select last_name from employees where 
Last_name like '%a%' and
Last_name like '%e%' and
Last_name like '%s%' ;

感谢大家的宝贵宝贵意见。

2 个答案:

答案 0 :(得分:3)

如果您真的想要一行,就必须

regexp_like(last_name, '(a.*b.*c)|(a.*c.*b)|(b.*a.*c)|(b.*c.*a)|(c.*a.*b)|(c.*b.*a)')

这是非常不可读的。 我建议您将初始方法用于likeand

Oracle正则表达式很简单,并且没有提供正向先行的功能,因此在这种情况下,即在javascript中使其变得简单。在javascript中,这将是

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

答案 1 :(得分:0)

相当简单:

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