oracle db中的多个字符串检查

时间:2016-03-14 04:49:11

标签: oracle

说我想检查标题名称是否包含" stack"或包含" over"或包含" flow"。我可以缩短以下代码吗?

select name 
from Title
where name like '%stack%' or name like '%over%' or name like '%flow%'
;

谢谢!

1 个答案:

答案 0 :(得分:1)

可以使用REGEXP_LIKE,但这可能会影响性能,因此您可能希望针对特定用例对其进行测试;

SELECT name 
FROM Title
WHERE REGEXP_LIKE(name, '.*(stack|over|flow).*')

...或者如果您希望匹配大小写不敏感,您可以将i作为第三个参数传递;

SELECT name 
FROM Title
WHERE REGEXP_LIKE(name, '.*(stack|over|flow).*', 'i');

A regex101 explaining the regex itself