sql >> Database >  >> RDS >> Mysql

MySQL-update of hernoem een ​​sleutel in JSON

Er is geen eenvoudige JSON-functie om hetzelfde te doen. We kunnen een combinatie van sommige JSON-functies gebruiken.

We zullen de oldKey-oldValue . verwijderen koppel met behulp van Json_Remove() functie, en dan Json_Insert() de newKey-oldValue paar.

Json_Extract() functie wordt gebruikt om waarde op te halen die overeenkomt met een invoersleutel in het JSON-document.

UPDATE `my_table` 
SET `my_col` = JSON_INSERT(
                           JSON_REMOVE(my_col, '$.oldKeyValue'), 
                           '$.newKeyValue', 
                           JSON_EXTRACT(my_col, '$.oldKeyValue')
                          );

Demo

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;

Resultaat

| @new_col                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------- |
| {"endDate": "2018-10-10", "startDate": "2017-09-05", "newKeyValue": {"bar": 2000, "baz": 3000, "foo": 1000}, "anotherValue": 0} |

Als alternatief voor Json_Extract() , we kunnen ook -> . gebruiken operator om toegang te krijgen tot de waarde die overeenkomt met een bepaalde sleutel in het JSON-document.

UPDATE `my_table` 
SET `my_col` = JSON_INSERT(
                           JSON_REMOVE(my_col, '$.oldKeyValue'), 
                           '$.newKeyValue', 
                           my_col->'$.oldKeyValue' 
                          );


  1. Hoe MySQL-database te herstellen van .myd-, .myi-, .frm-bestanden

  2. Verwijder alle spaties uit een string in SQL Server

  3. Afbeeldingen opslaan in bytea-velden in een PostgreSQL-database

  4. ckfinder php 2.6.2 instellingen bekijken, weergeven, sorteren werkt niet