如何简化包含特定字符串的SQL查询语句,替代多个LIKE条件实现更紧凑的写法
如何简化包含特定字符串的SQL查询语句,替代多个LIKE条件实现更紧凑的写法
嘿,我懂你想让查询代码更清爽的心情——重复写好几个LIKE确实有点冗余!先给你拆解下怎么优化你的需求:
首先,你原来写的三个LIKE条件其实完全可以合并成一个:
SELECT name FROM world WHERE name LIKE '%united%'
因为%united%这个模式会匹配任何位置包含"united"的字符串,不管它在名称的开头、结尾还是中间,已经覆盖了你之前三个条件的所有情况,一下子就简洁多了!
如果你确实想找类似IN的模式匹配写法(毕竟IN不支持通配符模式匹配,它只会做完全相等的匹配,所以你之前的尝试行不通),那可以用正则表达式来实现:
- 在MySQL、MariaDB这类数据库里,用
REGEXP或者RLIKE关键词:SELECT name FROM world WHERE name REGEXP 'united' - 要是用PostgreSQL,对应的操作符是
~:SELECT name FROM world WHERE name ~ 'united'
这种写法不仅和%united%效果一致,后续如果要匹配更复杂的多模式(比如同时找包含"united"或"kingdom"的名称),还能直接扩展成REGEXP 'united|kingdom',灵活性拉满。
总结下:
- 最简单的简化:直接合并成单个
LIKE '%united%' - 追求类似IN的模式集合写法:用数据库支持的正则匹配关键词
备注:内容来源于stack exchange,提问作者ProgrammingPi
相关产品推荐
相关产品推荐

