我在表中有一列以以下格式存储:

{"field1":"val1","field2":"val4"}
{"field1":"val2","field2":"val5"}
{"field1":"val3","field2":"val6"}

我需要删除所有带有值的field1(例如“field1”:“val1”,“field1”:“val2”,“field1”:“val3”),结果应为
{"field2":"val4"}
{"field2":"val5"}
{"field2":"val6"}

我正在尝试通过替换来实现此目的,但卡在“field1”中:“val1”字符串val1可以是任何值,例如null,一些整数。
UPDATE emp SET col = REPLACE(col, '"field1":"val1"', '')

由于此val1的动态值,我陷入了困境。

最佳答案

我更喜欢使用JSON_REMOVE函数(MySQL):

UPDATE emp
SET emp.col = JSON_REMOVE(emp.col, '$.field1');

您还可以添加WHERE子句:
WHERE emp.col LIKE '%val6%';

引用:MySQL JSON_REMOVEMySQL JSON path

带有示例的博客文章:MySQL for your JSON

还有关于MySQL中json路径的注释:

关于mysql - 删除 key :value from json string stored in a MySQL database,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35724999/

10-12 17:23
查看更多