Der er ingen ligetil JSON-funktion til at gøre det samme. Vi kan bruge en kombination af nogle JSON-funktioner.
Vi fjerner oldKey-oldValue parre ved hjælp af Json_Remove( )
funktion, og derefter Json_Insert()
newKey-oldValue par.
Json_Extract()
funktion bruges til at hente en værdi svarende til en inputnøgle i JSON-dokumentet.
OPDATERING `my_table` SET `my_col` =JSON_INSERT( JSON_REMOVE(my_col, '$.oldKeyValue'), '$.newKeyValue', JSON_EXTRACT(my_col, '$.oldKeyValue') );
SET @my_col :='{"endDate":"2018-10-10", "startDate":"2017-09-05", "oldKeyValue":{"foo":1000, "bar ":2000, "baz":3000}, "anotherValue":0}';SET @new_col :=JSON_INSERT( JSON_REMOVE(@my_col, '$.oldKeyValue'), '$.newKeyValue', JSON_EXTRACT(@my_col,' $.oldKeyValue') );SELECT @new_col;
Resultat
| @ny_kol || -------------------------------------------------- -------------------------------------------------- --------------------------- || {"endDate":"2018-10-10", "startDate":"2017-09-05", "newKeyValue":{"bar":2000, "baz":3000, "foo":1000}, " anotherValue":0} |
Som et alternativ til Json_Extract()
, kan vi også bruge ->
operatør for at få adgang til den værdi, der svarer til en given nøgle i JSON-dokumentet.
OPDATERING `my_table` SET `my_col` =JSON_INSERT( JSON_REMOVE(my_col, '$.oldKeyValue'), '$.newKeyValue', my_col->'$.oldKeyValue' );