Няма ясна JSON функция, която да направи същото. Можем да използваме комбинация от някои JSON функции.
Ще премахнем oldKey-oldValue сдвоете с помощта на Json_Remove( )
функция и след това Json_Insert()
newKey-oldValue чифт.
Json_Extract()код>
функцията се използва за извличане на стойност, съответстваща на входен ключ в JSON документа.
АКТУАЛИЗАЦИЯ `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_EXTRAl $.oldKeyValue') );SELECT @new_col;
Резултат
<предварителен код>| @new_col || -------------------------------------------------- -------------------------------------------------- --------------------------- || {"endDate":"2018-10-10", "startDate":"2017-09-05", "newKeyValue":{"bar":2000, "baz":3000, "foo":1000}, " друга стойност":0} |
Като алтернатива на Json_Extract()
, можем също да използваме ->
оператор за достъп до стойността, съответстваща на даден ключ в JSON документа.
АКТУАЛИЗАЦИЯ `my_table` SET `my_col` =JSON_INSERT( JSON_REMOVE(my_col, '$.oldKeyValue'), '$.newKeyValue', my_col->'$.oldKeyValue' );