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

MariaDB JSON_KEYS()の説明

    MariaDBでは、JSON_KEYS() JSONドキュメントからトップレベルキーの配列を返す組み込み関数です。パスが指定されている場合は、そのパスから最上位のキーが返されます。

    指定されたレベルのネストされたサブオブジェクトからキーを除外します。

    また、選択したオブジェクトが空の場合は、空の配列が返されます。

    構文

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

    JSON_KEYS(json_doc[, path])

    json_docの場所 はJSONドキュメントであり、path ドキュメント内のパスです。

    実例を示します。

    SET @json_document = '
        { 
            "name": "Wag", 
            "type": "Dog", 
            "weight": 20 
        }
    ';
    SELECT JSON_KEYS(@json_document);

    結果:

    +----------------------------+
    | JSON_KEYS(@json_document)  |
    +----------------------------+
    | ["name", "type", "weight"] |
    +----------------------------+

    パスの指定

    ドキュメント内のパスを指定する例を次に示します。

    SET @json_document = '
        { 
            "_id" : 1, 
            "name" : "Wag", 
            "details" : {
                "type" : "Dog", 
                "weight" : 20,
                "awards" : { 
                    "Florida Dog Awards" : "Top Dog", 
                    "New York Marathon" : "Fastest Dog", 
                    "Sumo 2020" : "Biggest Dog"
                }
            }
        }
    ';
    SELECT JSON_KEYS(
        @json_document, 
        '$.details'
        ) AS Result;

    結果:

    +------------------------------+
    | Result                       |
    +------------------------------+
    | ["type", "weight", "awards"] |
    +------------------------------+

    前述のように、サブオブジェクトは結果から除外されます。

    存在しないパス

    JSONドキュメントに存在しないパスを渡すと、NULLになります 。

    例:

    SET @json_document = '
        { 
            "_id" : 1, 
            "name" : "Wag", 
            "details" : {
                "type" : "Dog", 
                "weight" : 20,
                "awards" : { 
                    "Florida Dog Awards" : "Top Dog", 
                    "New York Marathon" : "Fastest Dog", 
                    "Sumo 2020" : "Biggest Dog"
                }
            }
        }
    ';
    SELECT JSON_KEYS(
        @json_document, 
        '$.wrong'
        ) AS Result;

    結果:

    +--------+
    | Result |
    +--------+
    | NULL   |
    +--------+

    空のオブジェクト

    選択したオブジェクトが空の場合、空の配列が返されます:

    SELECT JSON_KEYS('{}');

    結果:

    +-----------------+
    | JSON_KEYS('{}') |
    +-----------------+
    | []              |
    +-----------------+

    ヌル引数

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

    SELECT 
        JSON_KEYS(null),
        JSON_KEYS(null, '$.type'),
        JSON_KEYS('{"a":1}', null);

    結果:

    +-----------------+---------------------------+----------------------------+
    | JSON_KEYS(null) | JSON_KEYS(null, '$.type') | JSON_KEYS('{"a":1}', null) |
    +-----------------+---------------------------+----------------------------+
    | NULL            | NULL                      | NULL                       |
    +-----------------+---------------------------+----------------------------+

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

    引数を指定しないとエラーが発生します:

    SELECT JSON_KEYS();

    結果:

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

    提供する引数が少なすぎても多すぎても同じです:

    SELECT JSON_KEYS('{ "a": 1}', 1, 2);

    結果:

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

    1. MAX()–MySQLの列の最大値を見つける

    2. SQLローダーコマンドの実行中にエラーが発生した場合にロールバックするにはどうすればよいですか?

    3. しきい値に達した後に実行中のSUMをリセットするにはどうすればよいですか?

    4. MINまたはMAXにnull値を含めるにはどうすればよいですか?