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

MySQL中查找JSON字符串内匹配整数123的报错问题排查

MySQL JSON查询错误分析与修正

第一个查询(JSON_CONTAINS)的错误及修正

  • 错误原因:JSON_CONTAINS的第二个参数要求是JSON格式的值,你的respCode存储的是字符串类型的"123",但你传入的是数字123,类型不匹配;同时该参数必须是JSON字符串或JSON类型,因此需要将查询值转为JSON格式的字符串。
  • 修正后的语句:
SELECT * FROM `reports` WHERE JSON_CONTAINS(json_data, '"123"', '$.respCode');

或者用JSON_QUOTE函数自动处理引号:

SELECT * FROM `reports` WHERE JSON_CONTAINS(json_data, JSON_QUOTE('123'), '$.respCode');

第二个查询(JSON_UNQUOTE+JSON_EXTRACT)的错误及修正

  • 错误原因:你在JSON_EXTRACT里把列名json_data用单引号括起来了,这会让MySQL将其视为普通字符串,而非读取列中的JSON数据。
  • 修正后的语句:
SELECT * FROM `reports` WHERE JSON_UNQUOTE(JSON_EXTRACT(json_data, '$.respCode')) = '123';

更简洁的写法(MySQL 5.7.9及以上版本支持):

SELECT * FROM `reports` WHERE json_data->>'$.respCode' = '123';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:22:05