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

MySQL JSON列迁移:将Q1的JSON对象转为JSON数组的方案

解决方案:MySQL中将JSON列的Q1对象转为数组

你可以通过MySQL内置的JSON函数组合实现这个迁移,不需要额外工具,核心思路是提取Q1的对象值,用JSON_ARRAY包装成数组,再用JSON_SET替换原路径的值。

1. 先验证转换结果(推荐先执行此步骤确认)

假设你的表名为survey_data,JSON列名为response_json,执行以下SELECT语句查看转换后的效果:

SELECT
  response_json AS original_json,
  JSON_SET(
    response_json,
    '$.Q1',
    JSON_ARRAY(JSON_EXTRACT(response_json, '$.Q1'))
  ) AS converted_json
FROM survey_data;

2. 执行批量更新

确认结果正确后,执行UPDATE语句完成迁移。为避免重复转换已经是数组的Q1,加上JSON_TYPE判断条件:

UPDATE survey_data
SET response_json = JSON_SET(
    response_json,
    '$.Q1',
    JSON_ARRAY(JSON_EXTRACT(response_json, '$.Q1'))
  )
WHERE JSON_TYPE(JSON_EXTRACT(response_json, '$.Q1')) = 'OBJECT';

关键函数说明

  • JSON_EXTRACT(response_json, '$.Q1'):提取JSON列中Q1对应的对象值
  • JSON_ARRAY(...):将提取到的对象包装成数组
  • JSON_SET(...):将原JSON中的Q1路径值替换为新的数组
  • JSON_TYPE(...) = 'OBJECT':仅对Q1是对象的行执行更新,避免对已经是数组的Q1重复操作

注意事项

  • 操作前建议备份表数据,或者开启事务执行,确保数据安全
  • 如果Q1可能不存在于部分JSON中,可以额外添加JSON_CONTAINS_PATH(response_json, 'one', '$.Q1') = 1条件过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:50:42