You need to enable JavaScript to run this app. SQL使用单个LIKE子句匹配多个字符串模式的实现方案
优惠活动
大模型
产品
解决方案
定价
更多

SQL使用单个LIKE子句匹配多个字符串模式的实现方案

方案1:正则表达式匹配(主流数据库通用)

将所有待匹配的关键词用|拼接为正则规则,单次匹配即可覆盖所有条件,不需要重复写OR判断:

  • MySQL 写法:
SELECT * 
FROM Table_1
WHERE Column_A REGEXP 'AB|BE|DE';
  • PostgreSQL 写法:
SELECT * 
FROM Table_1
WHERE Column_A ~ 'AB|BE|DE';
  • Oracle 写法:
SELECT * 
FROM Table_1
WHERE REGEXP_LIKE(Column_A, 'AB|BE|DE');
  • SQL Server 写法:
SELECT * 
FROM Table_1
WHERE Column_A REGEXP 'AB|BE|DE';

注意:如果待匹配关键词包含.、*、+等正则特殊字符,拼接规则前需要先转义特殊字符,避免匹配逻辑出错。

方案2:关键词表关联匹配(适合关键词数量多、动态更新的场景)

如果你的关键词后续会频繁增减,或者数量超过几十个,建议单独建一张关键词存储表Keyword_List,字段为keyword,存储所有待匹配的取值,用关联查询实现匹配:

SELECT DISTINCT t1.*
FROM Table_1 t1
INNER JOIN Keyword_List kl 
  ON t1.Column_A LIKE CONCAT('%', kl.keyword, '%');

这种方案后续调整关键词只需要修改Keyword_List的表数据,不需要改动SQL代码,维护成本极低。

方案3:数组匹配(支持数组类型的数据库适用)

PostgreSQL、ClickHouse等支持数组类型的数据库,可以直接用数组匹配函数简化写法:

-- PostgreSQL 示例
SELECT *
FROM Table_1
WHERE Column_A LIKE ANY (ARRAY['%AB%', '%BE%', '%DE%']);

你只需要把所有关键词前后拼接%放到数组中即可,不需要写多个OR条件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 23:06:08