我有以下 json 欄位
{
"Covid-19Vaccine Staus": "Not vaccinated (intent to in the future)",
"Date of last vaccine taken": "2021-08-09T00:00:00 04:00",
"If vaccinated, Name of vaccination received": "Other WHO Approved vaccine"
}
我想要做的是更新關鍵描述,即 Covid-19 Vaccine Staus 到 Covid19VaccineStaus。
在對 mysql 作業臺上的欄位進行直接更新時,它會生成以下查詢,
UPDATE `my_json_table` SET `containerValue` = '{\"Covid19VaccineStaus\": \"Vaccinated\", \"Date of last vaccine taken\": \"2021-07-13T00:00:00 04:00\", \"If vaccinated, Name of vaccination received\": \"Pfizer-BioNTech\"}' WHERE (`id` = '94');
看起來它需要該欄位的整個值,然后進行更新。
如果我只想更新Covid19VaccineStatus鍵而不為 json 模式輸入其他資料點的值,那么查詢應該是什么樣的。
uj5u.com熱心網友回復:
請看一下JSON 函式
JSON_REPLACE,
替換 JSON 檔案中的值
JSON_REMOVE,
從 JSON 檔案中洗掉資料
JSON_INSERT
將資料插入 JSON 檔案
UPDATE `my_json_table` SET `containerValue` = JSON_REPLACE(`containerValue`, '$."Covid-19Vaccine Staus"', 'Vaccinated') WHERE (`id` = '94');
UPDATE `my_json_table` SET `containerValue` = JSON_REMOVE(`containerValue`, '$."Covid-19Vaccine Staus"') WHERE (`id` = '94');
UPDATE `my_json_table` SET `containerValue` = JSON_INSERT(`containerValue`, '$."Covid-19Vaccine Staus"', 'Vaccinated') WHERE (`id` = '94');
替換鍵并保持值
UPDATE `my_json_table`
SET `containerValue` =
JSON_REMOVE(
JSON_INSERT(`containerValue`, '$."Covid19VaccineStaus"',
JSON_EXTRACT(`containerValue`, '$."Covid-19Vaccine Staus"')),
'$."Covid-19Vaccine Staus"')
WHERE (`id` = '94');
uj5u.com熱心網友回復:
您可以使用JSON_SET來處理插入和更新操作。
UPDATE my_json_table
SET containerValue = JSON_SET(containerValue, '$."Covid-19Vaccine Staus"', 'Vaccinated')
WHERE id = 94;
因此,如果您的密鑰在您的 JSON 中尚不存在,它將與值一起插入Vaccinated。否則,與您的密鑰對應的值將被更新。
您還可以在此處找到有關如何使用JSON_SET.
如果您只需要更新值而不在鍵不存在的情況下在 JSON 中執行任何插入,則可以使用JSON_REPLACE。
如果您只需要插入鍵和值,但在鍵已經存在的情況下不在 JSON 中執行任何更新,則可以使用JSON_INSERT。
如果要更新密鑰的名稱:
UPDATE my_json_table
SET containerValue = JSON_INSERT(
JSON_REMOVE(containerValue, '$."Covid-19Vaccine Staus"'),
'$.Covid19VaccineStaus',
JSON_EXTRACT(containerValue, '$."Covid-19Vaccine Staus"')
)
WHERE id = 94;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/351607.html
上一篇:ActionController::InvalidAuthenticityToken(ActionController::InvalidAuthenticityToken):將JSON引數發布到Rai
