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

MariaDB JSON_ARRAY_APPEND()の説明

    MariaDBでは、JSON_ARRAY_APPEND() JSONドキュメント内の指定された配列の最後に値を追加し、結果を返す組み込み関数です。

    構文

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

    JSON_ARRAY_APPEND(json_doc, path, value[, path, value] ...)

    json_docの場所 JSONドキュメント、path 値を追加する場所へのパスであり、value 追加する値です。

    関数を示す例を次に示します。

    SET @json_doc = '[0, 1, 2, 3]';
    
    SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4);

    結果:

    +--------------------------------------+
    | JSON_ARRAY_APPEND(@json_doc, '$', 4) |
    +--------------------------------------+
    | [0, 1, 2, 3, 4]                      |
    +--------------------------------------+

    この場合、値4 配列の最後に追加されました。

    複数の値を追加

    JSON_ARRAY_APPEND()への1回の呼び出しで複数の値を追加できます 。

    例:

    SET @json_doc = '[0, 1, 2, 3]';
    
    SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5);

    結果:

    +----------------------------------------------+
    | JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5) |
    +----------------------------------------------+
    | [0, 1, 2, 3, 4, 5]                           |
    +----------------------------------------------+

    複数のアレイ

    JSON_ARRAY_APPEND()への同じ呼び出し内の複数の配列に値を追加できます 。

    例:

    SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
    
    SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5);

    結果:

    +--------------------------------------------------+
    | JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5) |
    +--------------------------------------------------+
    | {"a": [0, 1, 4], "b": [2, 3, 5]}                 |
    +--------------------------------------------------+

    ネストされた配列

    ネストされた配列に値を追加する例を次に示します。

    SET @json_doc = '[0, 1, [2, 3]]';
    
    SELECT JSON_ARRAY_APPEND(@json_doc, '$[2]', 4);

    結果:

    +-----------------------------------------+
    | JSON_ARRAY_APPEND(@json_doc, '$[2]', 4) |
    +-----------------------------------------+
    | [0, 1, [2, 3, 4]]                       |
    +-----------------------------------------+

    次の例では、元のJSONドキュメントにネストされた配列は含まれていませんが、JSON_ARRAY_APPEND() パスに基づいてネストされた配列を作成します:

    SET @json_doc = '[0, 1, 2, 3]';
    
    SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4);

    結果:

    +-----------------------------------------+
    | JSON_ARRAY_APPEND(@json_doc, '$[3]', 4) |
    +-----------------------------------------+
    | [0, 1, 2, [3, 4]]                       |
    +-----------------------------------------+

    より大きなJSONドキュメント

    これは、少し大きいJSONドキュメントの例です。

    JSON_DETAILED()も使用します 結果を美しくするために:

    SET @json_doc = '{  
        "pet": {    
           "name": "Fluffy", 
           "diet": ["Fish", "Chicken"]  
        }
     }';
    SELECT JSON_DETAILED(
            JSON_ARRAY_APPEND(
                @json_doc, 
                '$.pet.diet', 
                'Water')
    );

    結果:

    {
        "pet": 
        {
            "name": "Fluffy",
            "diet": 
            [
                "Fish",
                "Chicken",
                "Water"
            ]
        }
    }

    そして、ネストされた配列を作成するものは次のとおりです。

    SET @json_doc = '{  
        "pet": {    
           "name": "Scratch", 
           "diet": ["Beef", "Water"]
        }
     }';
    SELECT JSON_DETAILED(
            JSON_ARRAY_APPEND(
                @json_doc, 
                '$.pet.diet[1]', 
                'Beer')
    );

    結果:

    {
        "pet": 
        {
            "name": "Scratch",
            "diet": 
            [
                "Beef",
                
                [
                    "Water",
                    "Beer"
                ]
            ]
        }
    }

    ヌル引数

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

    SELECT JSON_ARRAY_APPEND(null, '$', 4);

    結果:

    +---------------------------------+
    | JSON_ARRAY_APPEND(null, '$', 4) |
    +---------------------------------+
    | NULL                            |
    +---------------------------------+

    同じことがpathにも当てはまります 引数:

    SET @json_doc = '[0, 1, 2, 3]';
    
    SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);

    結果:

    +---------------------------------------+
    | JSON_ARRAY_APPEND(@json_doc, null, 4) |
    +---------------------------------------+
    | NULL                                  |
    +---------------------------------------+

    ただし、value 引数はNULLです 、次にNULL 配列に追加されます:

    SET @json_doc = '[0, 1, 2, 3]';
    
    SELECT JSON_ARRAY_APPEND(@json_doc, '$', null);

    結果:

    +-----------------------------------------+
    | JSON_ARRAY_APPEND(@json_doc, '$', null) |
    +-----------------------------------------+
    | [0, 1, 2, 3, null]                      |
    +-----------------------------------------+

    JSON_ARRAY_INSERT()を使用することもできます 配列に値を挿入します。


    1. SQLServerで「datediff関数がオーバーフローを引き起こしました」エラーを修正する方法

    2. MySQLの1つを除くすべての列を選択しますか?

    3. MySQLでのRTRIM()関数のしくみ

    4. JDBC ResultSetは、テーブルエイリアスを持つ列を取得します