如何在MySQL中提取JSON列的ar属性值并替换原有JSON内容?
MySQL提取JSON字段中ar属性的实现方案
验证查询(执行更新前先运行确认结果符合预期)
你可以先运行以下查询查看提取后的结果,确认没问题再执行更新:
-- 写法1:使用完整JSON函数 SELECT id, JSON_UNQUOTE(JSON_EXTRACT(name, '$.ar')) AS extracted_ar FROM areas; -- 写法2:使用MySQL简化语法,和写法1效果完全一致 SELECT id, name->>'$.ar' AS extracted_ar FROM areas;
执行更新操作
确认查询结果符合要求后,运行以下UPDATE语句修改name字段内容:
UPDATE areas SET name = name->>'$.ar';
注意事项
- 操作前必须先备份全表数据,避免修改出错无法回滚,备份语句参考:
CREATE TABLE areas_bak_2024 AS SELECT * FROM areas; - 上述语法仅支持MySQL 5.7及更高版本,低于该版本的MySQL不支持原生JSON处理函数
- 如果你不确定所有行的
name都是合法JSON、且都存在ar属性,可以先查询异常数据提前处理:SELECT * FROM areas WHERE JSON_VALID(name) = 0 OR JSON_CONTAINS_PATH(name, 'one', '$.ar') = 0;
内容的提问来源于stack exchange,提问作者ser
相关产品推荐
相关产品推荐

