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

MariaDB JSON_ARRAY_INSERT()の説明

    MariaDBでは、 JSON_ARRAY_INSERT() は、JSONドキュメントに値を挿入し、結果を返す組み込み関数です。

    構文

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

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

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

    実例を示します。

    SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3);

    結果:

    +-------------------------------------------+
    | JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |
    +-------------------------------------------+
    | [0, 3, 1, 2]                              |
    +-------------------------------------------+

    この場合、値 3 配列の1の位置に挿入されました 。配列はゼロベースであるため、配列の2番目の要素になります。

    複数の値を挿入

    JSON_ARRAY_INSERT()への1回の呼び出しで複数の値を挿入できます 。

    例:

    SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5);

    結果:

    +------------------------------------------------------+
    | JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |
    +------------------------------------------------------+
    | [4, 0, 5, 1, 2]                                      |
    +------------------------------------------------------+

    評価は左から右に行われます。

    pathを切り替えるとどうなりますか / 周りの議論:

    SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4);

    結果:

    +------------------------------------------------------+
    | JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |
    +------------------------------------------------------+
    | [4, 0, 1, 5, 2]                                      |
    +------------------------------------------------------+

    複数のアレイ

    JSON_ARRAY_INSERT()への同じ呼び出し内で、複数の配列に値を挿入できます。 。

    例:

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

    結果:

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

    ネストされた配列

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

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

    結果:

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

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

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

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

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

    結果:

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

    ヌル引数

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

    SELECT JSON_ARRAY_INSERT(null, '$[1]', 4);

    結果:

    +------------------------------------+
    | JSON_ARRAY_INSERT(null, '$[1]', 4) |
    +------------------------------------+
    | NULL                               |
    +------------------------------------+

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

    SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4);

    結果:

    +--------------------------------------------+
    | JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |
    +--------------------------------------------+
    | NULL                                       |
    +--------------------------------------------+

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

    SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null);

    結果:

    +----------------------------------------------+
    | JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |
    +----------------------------------------------+
    | [0, null, 1, 2]                              |
    +----------------------------------------------+

    JSON_ARRAY_APPEND()を使用することもできます 配列に値を追加します。


    1. 2つのSQLServerデータベース(スキーマとデータ)を比較するための最良のツールは何ですか?

    2. SQLServerでマスターデータベースを簡単に再構築する方法

    3. MariaDB UCASE()の説明

    4. SQL Server(T-SQL)で文字列を別の文字列に置き換える