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

MariaDB LIKE语句转义符异常行为问题咨询

关于MySQL LIKE查询匹配JSON字段中反斜杠的问题

1. 为什么第一个LIKE查询没有结果?

这是因为MySQL的LIKE操作默认把反斜杠(\)当作转义符,再加上SQL字符串本身的转义规则,导致查询模式被解析后和实际存储内容不匹配:

  • 数据库payload字段里的JSON字符串包含"displayName":"App\\Jobs\\V1\\ProcessOrdersPendingCourier"——这里的\\是JSON的转义写法,对应字段文本里的两个连续反斜杠。
  • 第一个查询里的'App\\\\Jobs'经过SQL字符串转义后,会变成App\\Jobs(四个反斜杠缩减为两个)。但由于LIKE默认用\做转义符,这两个反斜杠会被进一步解析:第一个\是转义符,第二个\被转义成单个普通反斜杠。
  • 最终查询模式变成匹配App\Jobs(单个反斜杠),但数据库里实际是App\\Jobs(两个反斜杠),自然匹配不到记录。

2. 为什么必须使用ESCAPE字符?

当你通过ESCAPE '#'指定自定义转义符后,MySQL会放弃默认的\转义符,转而用#作为唯一转义符:

  • 此时查询模式里的\\不再被当作转义序列,而是直接被识别为两个普通的反斜杠字符,和数据库payload字段里存储的内容完全一致,因此能精准匹配到目标记录。
  • 你可以用@、&等任意非特殊字符作为转义符(只要它不在匹配模式里出现);但不能用\,因为SQL字符串本身需要转义\,指定ESCAPE '\\'会再次陷入转义循环,无法解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:05:16