gpt4 book ai didi

mysql - 使用 MySQL 语法更新 json 数组中 json 对象的特定键/值

转载 作者:行者123 更新时间:2023-12-05 08:03:53 25 4
gpt4 key购买 nike

我有 MySQL 5.7.12 数据库,其中有一个包含 JSON 列的表。

列中的数据结构如下(json数组可能包含2个以上的json-objects:

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

我想制作一个 UPDATE 查询来更改 ste 的值,其中 tpe=PB

这是我的尝试:

更新用户 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'); 

最佳答案

希望你仍然需要它。

尝试在 JSON_SET 中使用变量路径。使用 JSON_SEARCH 获取变量路径,将 绝对路径 tpe 替换为 ste 以更新其值。适合我!

update user set ext= JSON_SET(ext, REPLACE(REPLACE(JSON_SEARCH(ext, 'one', 'PB'),'"',''),'tpe','ste'), 'A');

关于mysql - 使用 MySQL 语法更新 json 数组中 json 对象的特定键/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71041885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com