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

SQLite如何查询列值包含通配符%或_的记录

SQLite 匹配LIKE通配符本身(%、_)的查询方法

SQLite的LIKE语句中,%默认匹配任意长度任意字符,_默认匹配单个任意字符,要筛选字段值里包含这两个字符本身的记录,有两种可直接落地的实现方式:

场景1:筛选指定列包含%字符的记录

方法1:转义通配符+LIKE匹配

自定义转义字符,将需要匹配的字面%标记为普通字符即可,示例查询:

SELECT * FROM tbl WHERE col2 LIKE '%/%%' ESCAPE '/';

语句逻辑说明:

  • 末尾的ESCAPE '/'表示声明/为当前语句的转义符
  • 模式串中被/修饰的%(即/%)是要匹配的字面百分号,不会被解析为通配符
  • 模式串首尾未被转义的两个%是通配符,代表目标百分号的前后可以存在任意长度的任意内容,也就是“只要字段里包含%就命中”

方法2:用instr函数直接定位(更简单)

绕开LIKE的通配符规则,用SQLite原生的instr函数直接判断字符是否存在,不需要写转义逻辑:

SELECT * FROM tbl WHERE instr(col2, '%') > 0;

instr(字段名, 待查找内容)会返回待查找内容在字段值中首次出现的位置,不存在则返回0,判断返回值大于0即可筛选出包含目标字符的记录。


场景2:筛选指定列包含_字符的记录

逻辑和匹配%完全一致:

方法1:转义通配符+LIKE匹配

SELECT * FROM tbl WHERE col3 LIKE '%/_%' ESCAPE '/';

方法2:instr函数直接定位

SELECT * FROM tbl WHERE instr(col3, '_') > 0;

补充说明

  • 用LIKE转义方案时,转义字符可以自行选择,不强制用/,只要保证ESCAPE声明的转义符和模式串里使用的一致即可,比如用!作为转义符时,语句可以写成SELECT * FROM tbl WHERE col2 LIKE '%!%%' ESCAPE '!';,效果完全相同,注意选一个不会出现在字段实际内容里的字符当转义符就行。
  • 两种写法在SQLite中性能没有明显差异,LIKE转义写法符合通用SQL标准,跨数据库兼容性更好;instr写法更简洁,不容易写错转义逻辑。

内容的提问来源于stack exchange,提问作者Léa Massiot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:27:16