我有一個有JSON欄位的MySQL 5.7.12資料庫中的表格。
列中的資料具有以下結構(json數組可能包含多個json物件):
[{"ste": "I", "tpe": "PS"}, {"ste": "I", "tpe": "PB"}]
我想寫一個UPDATE
查詢,將tpe=PB
的ste
的值改變。
這是我的嘗試:
更新使用者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粉9738995672023-11-07 10:19:24
希望你仍然需要這個。
嘗試在你的JSON_SET
中使用變數路徑。使用JSON_SEARCH
來取得變數路徑,然後用絕對路徑tpe
取代為ste
來更新其值。對我有效!
update user set ext= JSON_SET(ext, REPLACE(REPLACE(JSON_SEARCH(ext, 'one', 'PB'),'"',''),'tpe','ste'), 'A');