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'