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

SQL中LIKE命令查询报MariaDB语法错误的修复方法

问题原因

报错直接来自SQL语法错误,另外代码里还有一处隐藏的传参bug:

  • 核心语法错误:LIKE是SQL独立的模糊匹配操作符,不需要和等号搭配使用。你写的LIKE = %s是非法写法,MariaDB解析到LIKE关键字后,本来预期后面接匹配模式,结果读到了多余的=,直接抛出语法错误,报错信息里提示的near '= %s'就是指这个多余的等号位置。
  • 隐藏传参bug:Python里单元素元组必须在元素后面加逗号,你写的val = (n)根本不是元组,就是变量n本身,就算改对SQL语法,这里传参格式不对也会触发执行错误。另外LIKE需要的通配符(%匹配任意多字符、_匹配单个字符)不能硬拼在SQL语句里,要放到参数值中,不然会失去参数化查询的防注入能力。
修复方法

按下面三点调整即可:

  1. 删掉LIKE后面多余的等号,修正SQL基础语法
  2. 给单元素元组补上末尾的逗号,符合Python的元组语法要求
  3. 把你需要的模糊匹配通配符,拼到传入的参数值里,不要直接写在SQL字符串中

修复后的代码参考:

# 按需调整通配符位置即可:
# 前缀匹配:f"{n}%"  后缀匹配:f"%{n}"  包含匹配:f"%{n}%"
match_val = f"%{n}%"
sql = '''SELECT Name FROM newtest WHERE Name LIKE %s'''
val = (match_val,)  # 注意单元素元组末尾的逗号不能丢
myobj = mycurs.execute(sql, val)

避坑提醒:千万别图省事写成LIKE '%%s%'这种直接把通配符拼在SQL语句里的形式,会直接绕过参数化查询的防护,存在SQL注入风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:45:38