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

MySQL中使用JSON_CONTAINS查询数组JSON字段uuid报错如何解决?

MySQL JSON_CONTAINS 针对数组结构的正确用法

你的问题出在传给JSON_CONTAINS的第二个参数不符合JSON格式要求。JSON_CONTAINS要求第二个参数必须是有效的JSON值,而你直接传入裸UUID字符串,这不符合JSON语法规范,因此触发了错误。

以下是几种正确的写法:

方法一:手动将UUID转为合法JSON字符串

把UUID用双引号包裹,作为JSON字符串传递给JSON_CONTAINS,同时指定匹配路径$[*].uuid:

SELECT * FROM tables c 
WHERE JSON_CONTAINS(c.data, '"64a3104c-01e6-417b-8a11-bf5af73ad87d"', '$[*].uuid');

方法二:用JSON_QUOTE()自动生成合法JSON字符串

使用JSON_QUOTE()函数将普通字符串转为符合JSON规范的格式,避免手动加引号的失误:

SELECT * FROM tables c 
WHERE JSON_CONTAINS(c.data, JSON_QUOTE('64a3104c-01e6-417b-8a11-bf5af73ad87d'), '$[*].uuid');

方法三:构造完整JSON对象匹配数组元素

不指定路径,直接构造和数组中元素结构一致的JSON对象,让JSON_CONTAINS在整个数组中查找匹配项:

SELECT * FROM tables c 
WHERE JSON_CONTAINS(c.data, '{"uuid": "64a3104c-01e6-417b-8a11-bf5af73ad87d"}');

以上三种方式都能正确匹配JSON数组中包含指定UUID的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:08:38