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

如何将词语列表传入SQL LIKE操作符实现多关键词匹配查询

多关键词LIKE匹配实现方法

要实现匹配列表内任意词语就返回记录的需求,核心逻辑是用OR连接多个独立的LIKE判断条件,只要任意一个条件命中就会返回对应行。

1. 固定关键词的原生SQL写法

直接把每个关键词单独作为LIKE的匹配条件,用OR串联即可:

SELECT customer_comments
FROM table
WHERE 
  customer_comments LIKE '%air con%'
  OR customer_comments LIKE '%no cold air%'
  OR customer_comments LIKE '%hot air%'
  OR customer_comments LIKE '%blowing hot air%'

注意:不需要特意调整关键词顺序,OR逻辑只要任意条件满足就会命中,短词不会覆盖长词的匹配结果。

2. Python场景下动态传入列表的安全写法

如果需要从my_list动态生成语句,不要直接手动拼接用户可控的关键词到SQL语句里,会存在SQL注入风险,要使用数据库驱动的参数化查询能力,自动生成条件片段:

my_list = ['air con', 'no cold air', 'hot air', 'blowing hot air']

# 生成OR连接的LIKE条件片段,注意根据你用的数据库驱动替换占位符:
# pymysql/psycopg2(PostgreSQL)用%s,SQLite用?
like_conditions = " OR ".join(["customer_comments LIKE %s" for _ in my_list])
# 给每个关键词拼接前后的%通配符,作为查询参数
query_params = [f"%{word}%" for word in my_list]

# 拼接得到最终可执行的SQL
final_sql = f"SELECT customer_comments FROM table WHERE {like_conditions}"

# 执行时传入参数即可,以pymysql为例:
# cursor.execute(final_sql, query_params)

可选简化方案(部分数据库支持)

如果使用的数据库支持正则函数,也可以用正则匹配简化语句,比如MySQL环境下可以写成:

SELECT customer_comments
FROM table
WHERE customer_comments REGEXP 'air con|no cold air|hot air|blowing hot air'

这种写法需要注意提前转义关键词里的正则特殊字符(比如.、*等),兼容性不如多个LIKE条件的方案,适合关键词确定无特殊字符的场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:03:23