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

JSON_TYPE()–MySQLでJSON値のタイプを取得します

    MySQLでは、JSON_TYPE() 関数はJSON値のタイプを返します。具体的には、utf8mb4を返します。 値のタイプを示す文字列。

    JSON値を引数として指定します。

    構文

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

    JSON_TYPE(json_val)
    

    ここで、json_val タイプを返すJSON値です。これは、オブジェクト、配列、またはスカラー型にすることができます。

    例1-オブジェクト

    値がオブジェクトの場合の例を次に示します。

    SET @data = '{"Name": "Homer", "Stupid": true}';
    SELECT JSON_TYPE(@data) 'JSON Type';
    

    結果:

    +-----------+
    | JSON Type |
    +-----------+
    | OBJECT    |
    +-----------+
    

    例2–アレイ

    これが配列の例です。

    SET @data = '[1, 2, 3]';
    SELECT JSON_TYPE(@data) 'JSON Type';
    

    結果:

    +-----------+
    | JSON Type |
    +-----------+
    | ARRAY     |
    +-----------+
    

    例3–配列からデータを抽出する

    配列内の個々の要素のタイプを取得することもできます。

    SET @data = '[1, 2, 3]';
    SELECT 
      JSON_EXTRACT(@data, '$[1]') 'Data',
      JSON_TYPE(JSON_EXTRACT(@data, '$[1]')) 'JSON Type';
    

    結果:

    +------+-----------+
    | Data | JSON Type |
    +------+-----------+
    | 2    | INTEGER   |
    +------+-----------+
    

    例4–オブジェクトからデータを抽出する

    同じことがオブジェクトのメンバーにも当てはまります。

    SET @data = '{"Name": "Homer", "Stupid": "True"}';
    SELECT 
      JSON_EXTRACT(@data, '$.Stupid') 'Data',
      JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
    

    結果:

    +--------+-----------+
    | Data   | JSON Type |
    +--------+-----------+
    | "True" | STRING    |
    +--------+-----------+
    

    その場合、値は文字列リテラル"True"でした。 。

    別の例を示しますが、今回はブール値trueを使用します 。

    SET @data = '{"Name": "Homer", "Stupid": true}';
    SELECT 
      JSON_EXTRACT(@data, '$.Stupid') 'Data',
      JSON_TYPE(JSON_EXTRACT(@data, '$.Stupid')) 'JSON Type';
    

    結果:

    +------+-----------+
    | Data | JSON Type |
    +------+-----------+
    | true | BOOLEAN   |
    +------+-----------+
    

    例5–データベースクエリ

    この例では、データベース列を使用しています。

    SELECT 
      Contents,
      JSON_TYPE(Contents) 'Contents',
      JSON_TYPE(JSON_EXTRACT(Contents, '$.Name')) 'Name'
    FROM Collections 
    WHERE CollectionId = 4;
    

    結果:

    +--------------------------------+----------+--------+
    | Contents                       | Contents | Name   |
    +--------------------------------+----------+--------+
    | {"Name": "Homer", "Stupid": 1} | OBJECT   | STRING |
    +--------------------------------+----------+--------+
    

    1. PostgreSQLでのAcosd()のしくみ

    2. OracleFormsのクエリで表示項目の値を入力する

    3. 列データ型のBYTEとCHARの違い

    4. SQLServer2000で@TABLEEXEC@queryに挿入