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

MySQL中将JSON对象转为对象数组的更新方法问询

解决方案

你的问题根源是data列存储的是字符串格式的JSON,而非MySQL原生JSON类型,直接调用JSON_ARRAY()会把整个字符串作为数组元素,而非解析后的JSON对象。以下是具体解决步骤:

1. 先验证转换结果

执行查询确认转换逻辑正确:

-- MySQL 8.0.17+版本,用JSON_PARSE解析字符串为JSON对象后包装成数组
SELECT JSON_ARRAY(JSON_PARSE(data)) FROM A;

-- 兼容低版本的写法,先用JSON_UNQUOTE处理再转JSON对象
SELECT JSON_ARRAY(JSON_UNQUOTE(data)) FROM A;

2. 批量更新数据

确认结果符合预期后,执行UPDATE语句永久修改:

UPDATE A
SET data = JSON_ARRAY(JSON_PARSE(data))
WHERE JSON_VALID(data); -- 仅更新合法的JSON字符串记录,避免报错

3. 针对JSON类型列的JSON_SET用法(可选)

如果data本身是MySQL原生JSON类型,只是需要把其中的某个对象字段转为数组,可使用JSON_SET:

-- 示例:将data中key字段的对象值转为数组
UPDATE A
SET data = JSON_SET(
    data, 
    '$.key', 
    JSON_ARRAY(JSON_EXTRACT(data, '$.key'))
)
WHERE JSON_TYPE(JSON_EXTRACT(data, '$.key')) = 'OBJECT';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:22