sql中如何实现like多个通配字符?

有一个问题,想取某个字段中匹配多种字符的记录,怎么办?
select *
from actor
where last_name like ('%DAVI%','MOSTEL%','ABC','kkk%aa')
以上sql语句是错误的,like不支持多个字符串,怎样才能实现呢?
谢谢

阅读 42.7k
3 个回答

用OR拼接起来, where last_name like '%DAVI%' OR last_name like 'MOSTEL%' OR ...

如果 patterns 不是很多,用

last_name LIKE patt1 OR last_name LIKE patt2 ...

就好。如果 patterns 很多,可以把 patterns 存在一个表 patterns(pat) 里面,然后:

SELECT * FROM actor
 WHERE EXISTS (
       SELECT 1 FROM patterns 
        WHERE actor.last_name LIKE patterns.pat)

如果你用的是oracle,可以使用正则函数,regexp_like

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏