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
相关产品推荐
相关产品推荐

