sql >> データベース >  >> RDS >> Mysql

MySQLでJSONのキーを更新または名前変更

    同じことを行うための簡単なJSON関数はありません。いくつかのJSON関数を組み合わせて使用​​できます。

    oldKey-oldValueを削除します Json_Remove() 関数、次に Json_Insert() newKey-oldValue ペア。

    Json_Extract() 関数は、JSONドキュメントの入力キーに対応する値をフェッチするために使用されます。

    UPDATE `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;
    

    結果

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

    Json_Extract()の代わりに 、->も使用できます JSONドキュメント内の特定のキーに対応する値にアクセスするための演算子。

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


    1. 配列に一致する要素をSQLで選択し、それらを行に表示します

    2. MS Accessの制限は何ですか?

    3. デジタルトランスフォーメーション:すべてはデータ思考から始まります

    4. 問題:Mysqlが列挙型をIntに変換する