如何用单条MariaDB查询移除冗余JSON文本并保留指定字段数值
提取JSON长文本字段指定值的SQL实现
针对你的需求——从存储为longtext类型的JSON字段中提取targetted_id_position的值,同时移除冗余JSON结构,这里分两种常用场景给出单条SQL方案:
1. 仅查询提取目标值(不修改原表)
如果只是需要获取targetted_id_position的内容,不需要改动原数据,用以下SQL即可(MySQL 5.7+支持):
SELECT data->>'$.targetted_id_position' AS targetted_id_position FROM your_table_name;
->>是JSON_UNQUOTE(JSON_EXTRACT())的简写,能直接提取不带引号的纯文本值。
2. 更新原表,替换data列内容
如果需要直接把原表的data列替换为targetted_id_position的数值(移除整个JSON结构),执行这条UPDATE语句:
UPDATE your_table_name SET data = data->>'$.targetted_id_position';
注意事项
- 确保数据库版本支持JSON函数:MySQL 5.7及以上版本原生支持这些JSON操作,低版本可能需要用字符串截取函数(比如
SUBSTRING_INDEX),但这种方式对结构不固定的JSON可靠性差。 - 空值处理:如果
targetted_id_position是空字符串(如你的示例),更新后data列会变为空字符串,符合预期。 - 操作前验证:建议先通过SELECT语句确认提取结果正确,再执行UPDATE,避免误改数据。
内容的提问来源于stack exchange,提问作者slvhxia
相关产品推荐
相关产品推荐

