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

MariaDB JSON_TYPE()の説明

    MariaDBでは、JSON_TYPE() JSON値の型を文字列として返す組み込み関数です。

    構文

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

    JSON_TYPE(json_val)

    ここで、json_val タイプを返す値です。

    オブジェクトタイプ

    可能な返品タイプを次の表に示します。

    リターンタイプ
    ARRAY JSONアレイ。 [1, 2, 3]
    OBJECT JSONオブジェクト。 {"a":"1"}
    BOOLEAN JSON true/falseリテラル。 true またはfalse
    DOUBLE 浮動小数点の小数点以下1桁以上の数値。 1.2
    INTEGER 浮動小数点小数点のない数値。 1
    NULL JSON null リテラル。これは文字列として返され、SQL NULLと混同しないでください。 値。 null
    STRING JSON文字列。 "bird"

    実例を示します。

    SET @json = '
        { 
            "name" : "Fluffy", 
            "type" : "Cat" 
        }
    ';
    
    SELECT JSON_TYPE(@json);

    結果:

    +------------------+
    | JSON_TYPE(@json) |
    +------------------+
    | OBJECT           |
    +------------------+

    この例では、タイプがOBJECTのJSONドキュメント全体を渡しました。 。

    その他の例は次のとおりです:

    SELECT 
        JSON_TYPE('[1, 2, 3]'),
        JSON_TYPE('{ "a" : 1 }'),
        JSON_TYPE('true'),
        JSON_TYPE('false'),
        JSON_TYPE(10.59),
        JSON_TYPE(10),
        JSON_TYPE(null),
        JSON_TYPE('"Fuzzy Smith"');

    結果(垂直出力を使用):

        JSON_TYPE('[1, 2, 3]'): ARRAY
      JSON_TYPE('{ "a" : 1 }'): OBJECT
             JSON_TYPE('true'): BOOLEAN
            JSON_TYPE('false'): BOOLEAN
              JSON_TYPE(10.59): DOUBLE
                 JSON_TYPE(10): INTEGER
               JSON_TYPE(null): NULL
    JSON_TYPE('"Fuzzy Smith"'): STRING

    JSONドキュメントから値を抽出する

    前の例では、各値をリテラルとして関数に直接渡しました。

    JSON_TYPE()を組み合わせることができます JSON_EXTRACT()などの他の関数を使用する より大きなJSONドキュメント内の値のタイプを見つけるため。タイプを見つけるためにJSONドキュメントから値を抽出する例を次に示します。

    SET @json = '
        { 
            "name" : "Wag", 
            "scores" : [8, 0, 9] 
        }
    ';
    
    SELECT 
        JSON_TYPE(JSON_EXTRACT(@json, '$.name')) AS Result;

    結果:

    +--------+
    | Result |
    +--------+
    | STRING |
    +--------+

    より多くのタイプを返す別の例を次に示します。

    SET @json = '
        { 
            "name" : "Wag", 
            "scores" : [8, 0, 9],
            "weight" : 10.50,
            "height" : null,
            "age" : 4
        }
    ';
    
    SELECT 
        JSON_TYPE(
            JSON_EXTRACT(@json, '$.name')
            ) AS a,
        JSON_TYPE(
            JSON_EXTRACT(@json, '$.scores')
            ) AS b,
        JSON_TYPE(
            JSON_EXTRACT(@json, '$.scores[0]')
            ) AS c,
        JSON_TYPE(
            JSON_EXTRACT(@json, '$.weight')
            ) AS d,
        JSON_TYPE(
            JSON_EXTRACT(@json, '$.height')
            ) AS e,
        JSON_TYPE(
            JSON_EXTRACT(@json, '$.age')
            ) AS f;

    結果:

    +--------+-------+---------+--------+------+---------+
    | a      | b     | c       | d      | e    | f       |
    +--------+-------+---------+--------+------+---------+
    | STRING | ARRAY | INTEGER | DOUBLE | NULL | INTEGER |
    +--------+-------+---------+--------+------+---------+

    ヌル引数

    引数がnullの場合 、次にnull 返されます。

    SELECT JSON_TYPE(null);

    結果:

    +-----------------+
    | JSON_TYPE(null) |
    +-----------------+
    | NULL            |
    +-----------------+

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

    JSON_TYPE()を呼び出す 引数がないとエラーになります:

    SELECT JSON_TYPE();

    結果:

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

    渡される引数が多すぎる場合も同じです:

    SELECT JSON_TYPE(1, 2);

    結果:

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

    1. PHPを使用する場合のMySQLとMySQLi

    2. MYSQL count(*)またはcount(1)の何が優れていますか?

    3. PHPでPostgreSQLに接続できないpg_connect()

    4. データベース暗号化:3つのタイプとそれらが必要な理由