JSON_LENGTH
説明
JSON_LENGTH関数は、指定されたJSONドキュメント内の長さまたは要素数を返すために使用されます。JSONドキュメントが配列の場合、配列内の要素数を返します。JSONドキュメントがオブジェクトの場合、オブジェクト内のキーと値のペアの数を返します。JSONドキュメントが無効な場合、NULLを返します。
構文
JSON_LENGTH(<json_object> [, <path>])
パラメータ
必須パラメータ
<json_object>JSON型、長さを取得するJSONドキュメント。
オプションパラメータ
<path>String型、ドキュメント内の特定のオブジェクトの長さを返すために使用される。
注意事項
この関数は以下のルールに従ってJSONドキュメントの長さを計算します:
- スカラーの長さは1です。例:'1'、'"x"'、'true'、'false'、'null'はすべて長さが1です。
- 配列の長さは配列要素の数です。例:'[1, 2]'の長さは2です。
- オブジェクトの長さはオブジェクトメンバーの数です。例:'{"x": 1, "y": [1, 2, 3]}'の長さは2です。
戻り値
- JSON配列の場合、配列内の要素数を返します。
- JSONオブジェクトの場合、オブジェクト内のキーと値のペアの数を返します。
- JSONスカラー型(文字列、数値、真偽値、nullなど)の場合、1を返します。
- 無効なJSON文字列の場合、NULLを返します。
例
-
例1
SELECT json_length('{"k1":"v31","k2":300}');+--------------------------------------+
| json_length('{"k1":"v31","k2":300}') |
+--------------------------------------+
| 2 |
+--------------------------------------+SELECT json_length('[1, 2, 3, 4, 5, 6]');+-----------------------------------+
| json_length('[1, 2, 3, 4, 5, 6]') |
+-----------------------------------+
| 6 |
+-----------------------------------+ -
スカラー型の長さ
SELECT json_length('"abc"');+----------------------+
| json_length('"abc"') |
+----------------------+
| 1 |
+----------------------+SELECT json_length('123');+--------------------+
| json_length('123') |
+--------------------+
| 1 |
+--------------------+SELECT json_length('{"k": null}');+----------------------------+
| json_length('{"k": null}') |
+----------------------------+
| 1 |
+----------------------------+ -
パスを指定する
SELECT json_length('{"x": 1, "y": [1, 2]}', '$.y');+---------------------------------------------+
| json_length('{"x": 1, "y": [1, 2]}', '$.y') |
+---------------------------------------------+
| 2 |
+---------------------------------------------+ -
NULLパラメータ
SELECT json_length('{"x": 1, "y": [1, 2]}', NULL);+--------------------------------------------+
| json_length('{"x": 1, "y": [1, 2]}', NULL) |
+--------------------------------------------+
| NULL |
+--------------------------------------------+SELECT json_length(NULL, '$.y');+--------------------------+
| json_length(NULL, '$.y') |
+--------------------------+
| NULL |
+--------------------------+