首頁  >  問答  >  主體

更新JSON數組中特定鍵/值對的MySQL語法

我有一個有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粉386318086P粉386318086348 天前782

全部回覆(1)我來回復

  • P粉973899567

    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');

    回覆
    0
  • 取消回覆