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

SQL关联查询时如何实现like模糊匹配不区分大小写?

SQL模糊匹配不区分大小写调整方案

针对你当前的场景,总共有3种可行的调整方式,按需选择即可:

通用兼容方案(适配所有数据库,无需修改表结构)

直接将两个匹配字段统一转为小写/大写后再做匹配,3万条数据加52个关键词的量级下性能无压力,修改后的SQL如下:

SELECT a.*, b.word
FROM  key_word  b  INNER JOIN ssn_match_date a 
ON LOWER(a.narrative) LIKE CONCAT('%', LOWER(b.word), '%')

如果使用SQL Server数据库,将LOWER替换为LCASE效果完全一致。

长期优化方案(适合频繁需要不区分大小写匹配的场景)

你可以直接修改两个表对应字段的校对规则为「不区分大小写」类型,修改后原有SQL不需要任何调整就能自动实现不区分大小写匹配。
以MySQL为例,修改校对规则的语句如下(替换为你实际的字段长度即可):

-- 修改ssn_match_date表narrative字段校对规则
ALTER TABLE ssn_match_date MODIFY COLUMN narrative VARCHAR(实际字段长度) COLLATE utf8mb4_general_ci;
-- 修改key_word表关键词字段校对规则
ALTER TABLE key_word MODIFY COLUMN word VARCHAR(实际字段长度) COLLATE utf8mb4_general_ci;

校对规则后缀的ci就是Case Insensitive的缩写,代表不区分大小写。

数据库专属语法方案

部分数据库提供了原生的不区分大小写匹配语法,写法更简洁:

  • PostgreSQL数据库可直接使用ILIKE关键字替换LIKE:
SELECT a.*, b.word
FROM  key_word  b  INNER JOIN ssn_match_date a 
ON a.narrative ILIKE CONCAT('%', b.word, '%')
  • SQL Server数据库可在匹配时临时指定校对规则:
SELECT a.*, b.word
FROM  key_word  b  INNER JOIN ssn_match_date a 
ON a.narrative LIKE CONCAT('%', b.word, '%') COLLATE SQL_Latin1_General_CP1_CI_AS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:18:02