更新JSON数组中特定键/值对的MySQL语法
P粉386318086
P粉386318086 2023-11-06 14:50:43
0
1
831

我有一个带有JSON列的MySQL 5.7.12数据库中的表。

列中的数据具有以下结构(json数组可能包含多个json对象):

[{"ste": "I", "tpe": "PS"}, {"ste": "I", "tpe": "PB"}]

我想编写一个UPDATE查询,将tpe=PBste的值更改。

这是我的尝试:

更新用户SET ext = JSON_SET(JSON_SEARCH(ext, 'one', 'PB', NULL, '$**.tpe'), '$.tpe', 'A');

查询的输出应该是:

[{"ste": "I", "tpe": "PS"}, {"ste": "A", "tpe": "PB"}]

它不起作用 - 它将列更新为:

"$[0].tpe"

我该如何使其工作?

编辑

我认为这更有意义,但语法仍然有问题

UPDATE user SET ext = JSON_SET(ext->JSON_SEARCH(ext, 'one', 'PS', NULL, '$**.tpe'), '$.tpe', 'A');


P粉386318086
P粉386318086

全部回复(1)
P粉973899567

希望你仍然需要这个。

尝试在你的JSON_SET中使用变量路径。使用JSON_SEARCH来获取变量路径,然后用绝对路径tpe替换为ste来更新其值。对我有效!

update user set ext= JSON_SET(ext, REPLACE(REPLACE(JSON_SEARCH(ext, 'one', 'PB'),'"',''),'tpe','ste'), 'A');
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板