You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中如何使用通配符匹配列表,替代多段LIKE OR拼接写法?

不同数据库的简洁实现方案

你要的类似IN的通配符列表匹配效果,不同主流数据库都有对应语法支持,无需拼接多个OR条件:

PostgreSQL 方案(最贴近你期望的写法)

直接使用原生支持的 LIKE ANY 语法,将通配符模式放入数组即可:

CASE
  WHEN job_title LIKE ANY (ARRAY['%Temp%', '%Intern%', '%Substitute%']) THEN true
  ELSE false
END AS is_part_time,

MySQL 方案

用正则匹配函数 REGEXP 实现,多个匹配词用竖线分隔即可,默认就是包含匹配,无需额外写%:

CASE
  WHEN job_title REGEXP 'Temp|Intern|Substitute' THEN true
  ELSE false
END AS is_part_time,

如果需要区分大小写可以替换为 REGEXP BINARY。

SQL Server 方案

2016及以上版本可以结合STRING_SPLIT函数实现:

CASE
  WHEN EXISTS (
    SELECT 1 FROM STRING_SPLIT('Temp,Intern,Substitute', ',') t
    WHERE job_title LIKE '%' + t.value + '%'
  ) THEN 1
  ELSE 0
END AS is_part_time,

注:SQL Server无原生布尔类型,用1/0代表真/假。

跨数据库通用可维护方案

如果需要兼容多种数据库,或者后续要频繁调整匹配关键词,可以把匹配关键词存入单独的字典表(比如part_time_keywords,字段keyword存储要匹配的兼职关键词),用子查询匹配:

CASE
  WHEN EXISTS (
    SELECT 1 FROM part_time_keywords k
    WHERE job_title LIKE CONCAT('%', k.keyword, '%')
  ) THEN true
  ELSE false
END AS is_part_time,

后续新增/删除匹配关键词只需维护字典表数据,无需修改SQL代码。


内容的提问来源于stack exchange,提问作者Vijay Shekhawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:57:00