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

如何正确简化SQL多LIKE条件查询?避免非预期匹配结果

正确简化多前缀LIKE条件的SQL方案

你之前的写法出错的核心原因是:SQL的LIKE语法中,[]仅用于匹配单个字符的集合,而非多字符的前缀组。TT[AD,AG,AW,E,K]%实际会匹配TT后紧跟A/D/,/G/W/E/K中任意一个字符的内容,这才导致了TTAK、TTEK这类非预期结果。

以下是几种正确的简化方案:

方案1:保留OR逻辑,优化格式

如果数据库不支持正则,这是最稳妥的写法,仅做格式上的紧凑优化:

WHERE
    code LIKE 'TTAD%'
    OR code LIKE 'TTAG%'
    OR code LIKE 'TTAW%'
    OR code LIKE 'TTE%'
    OR code LIKE 'TTK%'

方案2:使用正则表达式匹配(适用于支持正则的数据库)

不同数据库的正则语法略有差异:

  • MySQL/MariaDB:使用REGEXP或RLIKE
    WHERE code REGEXP '^TT(AD|AG|AW|E|K)'
    
  • PostgreSQL:使用~操作符
    WHERE code ~ '^TT(AD|AG|AW|E|K)'
    
  • SQL Server:使用PATINDEX函数(2016+支持正则风格匹配)
    WHERE PATINDEX('TT(AD|AG|AW|E|K)%', code) > 0
    

方案3:结合LEFT函数与IN子句

针对不同长度的前缀拆分判断,若code字段有前缀索引,该方法更易触发索引优化:

WHERE
    (LEFT(code, 4) IN ('TTAD', 'TTAG', 'TTAW'))
    OR (LEFT(code, 3) IN ('TTE', 'TTK'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:05:24