sql >> Databáze >  >> RDS >> Mysql

MySQL Aktualizujte nebo přejmenujte klíč v JSON

Neexistuje žádná přímočará funkce JSON, která by udělala totéž. Můžeme použít kombinaci některých funkcí JSON.

Odebereme oldKey-oldValue spárovat pomocí Json_Remove() funkce a poté Json_Insert() newKey-oldValue pár.

Json_Extract() Funkce se používá k načtení hodnoty odpovídající vstupnímu klíči v dokumentu JSON.

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

Ukázka

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;

Výsledek

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

Jako alternativa k Json_Extract() , můžeme také použít -> operátor pro přístup k hodnotě odpovídající danému klíči v dokumentu JSON.

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


  1. Použití dotazu MySQL k procházení řádků k vytvoření rekurzivního stromu

  2. Nejlepší nástroje s otevřeným zdrojovým kódem pro migrace PostgreSQL

  3. Porovnání hodnot data CURDATE() s úplným polem časového razítka

  4. Co zkontrolovat, zda je využití paměti PostgreSQL vysoké