MariaDBでは、JSON_DEPTH()
は、JSONドキュメントの深さを確認できる組み込み関数です。
JSONドキュメントを引数として受け入れ、ドキュメントの最大深度を返します。
構文
構文は次のようになります:
JSON_DEPTH(json_doc)
json_doc
の場所 深さを返すJSONドキュメントです。
例
実例を示します。
SELECT JSON_DEPTH('{ "name": "Wag" }');
結果:
+---------------------------------+ | JSON_DEPTH('{ "name": "Wag" }') | +---------------------------------+ | 2 | +---------------------------------+
この場合、深さは2
です。 。
スカラー値と空のオブジェクト/配列
スカラー値または空の配列またはオブジェクトの深さは1
:
SELECT
JSON_DEPTH('{}'),
JSON_DEPTH('[]'),
JSON_DEPTH(1);
結果:
+------------------+------------------+---------------+ | JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH(1) | +------------------+------------------+---------------+ | 1 | 1 | 1 | +------------------+------------------+---------------+
より深いJSONドキュメント
これは、深さが4
のJSONドキュメントを使用する例です。 :
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_DEPTH(@json_document);
結果:
+----------------------------+ | JSON_DEPTH(@json_document) | +----------------------------+ | 4 | +----------------------------+
ヌル引数
引数がNULL
の場合 、結果はNULL
です :
SELECT JSON_DEPTH(null);
結果:
+------------------+ | JSON_DEPTH(null) | +------------------+ | NULL | +------------------+
無効なJSON
無効なJSONを渡すと、NULL
になります 警告付き:
SELECT JSON_DEPTH('{1}');
結果:
+-------------------+ | JSON_DEPTH('{1}') | +-------------------+ | NULL | +-------------------+ 1 row in set, 1 warning (0.000 sec)
警告を見てみましょう:
SHOW WARNINGS;
結果:
+---------+------+--------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------------------------------+ | Warning | 4038 | Syntax error in JSON text in argument 1 to function 'json_depth' at position 2 | +---------+------+--------------------------------------------------------------------------------+
パラメータカウントが正しくありません
引数を指定しないとエラーが発生します:
SELECT JSON_DEPTH();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'
提供する引数が多すぎる場合も同じです:
SELECT JSON_DEPTH('{"a": 1}', 2);
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_DEPTH'