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

MariaDB JSON_MERGE_PRESERVE()の説明

    MariaDBでは、JSON_MERGE_PRESERVE() は、2つ以上のJSONドキュメントをマージして結果を返す組み込み関数です。

    JSON_MERGE_PRESERVE() JSON_MERGE()の同義語です 、廃止されました。今後の問題を回避するには、JSON_MERGE_PATCH()を使用する必要があります 代わりに機能します。 JSON_MERGE_PATCH() 関数は、RFC7396に準拠したJSON_MERGE()の代替品です。 。

    構文

    構文は次のようになります:

    JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)

    json_docの場所 マージするJSONドキュメントです。

    実例を示します。

    SELECT JSON_MERGE_PRESERVE(
        '{"name":"Wag"}', 
        '{"type":"Dog"}'
        ) AS Result;

    結果:

    +--------------------------------+
    | Result                         |
    +--------------------------------+
    | {"name": "Wag", "type": "Dog"} |
    +--------------------------------+

    2つのドキュメントが1つにマージされていることがわかります。

    3つのドキュメントをマージする例を次に示します。

    SELECT JSON_MERGE_PRESERVE(
        '{ "name" : "Wag" }', 
        '{ "type" : "Dog" }',
        '{ "score" : [ 9, 7, 8 ] }'
        ) AS Result;

    結果:

    +----------------------------------------------------+
    | Result                                             |
    +----------------------------------------------------+
    | {"name": "Wag", "type": "Dog", "score": [9, 7, 8]} |
    +----------------------------------------------------+

    配列

    JSON_MERGE_PRESERVE()の違いの1つ およびJSON_MERGE_PATCH() そのJSON_MERGE_PRESERVE() 配列をマージします(JSON_MERGE_PATCH() しません):

    SELECT JSON_MERGE_PRESERVE(
        '[1,2,3]', 
        '[4,5,6]'
        ) AS Result;

    結果:

    +--------------------+
    | Result             |
    +--------------------+
    | [1, 2, 3, 4, 5, 6] |
    +--------------------+

    JSON_MERGE_PATCH()でこれを試みます その結果、2番目の配列のみが返されます。

    ご参考までに、はいJSON_MERGE() 配列もマージします。

    ヌル引数

    引数がNULLの場合 、結果はNULLです :

    SELECT 
        JSON_MERGE_PRESERVE('{"a":1}', null) AS a,
        JSON_MERGE_PRESERVE(null, '{"a":1}') AS b,
        JSON_MERGE_PRESERVE(null, null) AS c;

    結果:

    +------+------+------+
    | a    | b    | c    |
    +------+------+------+
    | NULL | NULL | NULL |
    +------+------+------+

    パラメータカウントが正しくありません

    引数なしで関数を呼び出すと、エラーが発生します:

    SELECT JSON_MERGE_PRESERVE();

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE_PRESERVE'

    引数を1つだけ指定した場合も同じです:

    SELECT JSON_MERGE_PRESERVE('{"a":1}');

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE_PRESERVE'

    1. パラメータスニッフィング入門書

    2. MariaDB UCASE()の説明

    3. postgres JSONインデックスは、従来の正規化されたテーブルと比較して十分に効率的ですか?

    4. Postgresqlを修正するためにHomebrewのreadlineバージョン6.xに戻りますか?