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

MySQL使用LIKE语句搜索数据库JSON编码文本匹配失败问题

问题原因

  1. SQL语法中反斜杠是默认转义字符,你写的查询条件%\u57fa\u672c%在解析时会把反斜杠标记为转义符,实际生效的匹配字符串是%u57fau672c%,和数据库中实际存储的包含反斜杠的\u57fa\u672c序列无法匹配。
  2. 你当前是直接对JSON编码后的原始字符串做模糊匹配,逻辑本身存在兼容性问题,只要JSON编码规则调整(比如部分字符直接存原字符而非Unicode转义),匹配就会失效。

解决方案

临时兼容方案(仅救急使用)

对查询中的反斜杠做二次转义,以MySQL为例,LIKE语法中匹配1个实际存储的反斜杠需要写4个反斜杠,修改后的查询如下:

SELECT p.* FROM Question p 
WHERE p.deletedAt IS NULL 
AND p.title LIKE '%\\\\u57fa\\\\u672c%' 
AND p.questionType=3;

长期最优方案

  1. 如果你使用的数据库支持JSON函数(MySQL 5.7+、PostgreSQL等都已支持),优先用JSON提取函数取出对应字段的值再匹配,完全规避转义问题,示例(MySQL):
SELECT p.* FROM Question p 
WHERE p.deletedAt IS NULL 
AND p.title->>'$.en' LIKE '%基本%' 
AND p.questionType=3;
  1. 性能优化建议:如果该字段的模糊查询频率很高,建议把JSON中需要检索的字段单独拆为普通列存储并加索引,查询性能远高于直接检索JSON字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:45:00