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

sqlite3.OperationalError near "%"语法错误:通配符占位符查询报错如何解决

SQLite LIKE 通配符语法报错解决方案

错误原因

你的写法将通配符%直接写在SQL语句的占位符外侧,%(?)%属于非法的SQL语法结构,SQLite解析时无法识别该格式,因此抛出语法错误。

修复方案

有两种可行的写法,均符合参数绑定规范,同时能实现模糊查询需求:

方案1(更推荐):提前拼接带通配符的查询参数

将通配符和需要查询的字母提前拼接为完整的查询值,再作为参数传入占位符:

# 拼接带前后通配符的查询参数
query_val = f"%{letter}%"
# 执行查询
result = cursor.execute("SELECT * FROM article WHERE name LIKE ?", (query_val,)).fetchall()

方案2:在SQL语句中拼接通配符

通过SQLite的字符串拼接运算符||直接在SQL语句中拼接通配符和占位符:

result = cursor.execute("SELECT * FROM article WHERE name LIKE '%' || ? || '%'", (letter,)).fetchall()

两种方案均严格遵循参数绑定规则,不会产生SQL注入风险,第一种写法逻辑更直观,更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:09:03