json_length
JSON ドキュメントの長さを返します。パスが指定されている場合、この関数はパスで識別される値の長さを返します。
すべての JSON 関数と Operator はナビゲーションと overview page に一覧されています。
クエリを 生成列 で高速化しましょう。
ドキュメントの長さは以下のルールに従って決定されます。
-
スカラー値の長さは 1 です。例えば、
1、"a"、true、false、nullの長さは 1 です。 -
配列の長さは配列要素の数です。例えば、
[1, 2]の長さは 2 です。 -
オブジェクトの長さはオブジェクトメンバーの数です。例えば、
{"a": 1}の長さは 1 です。 -
ネストされた配列やオブジェクトの長さはカウントされません。例えば、
{"a": [1, 2]}の長さは 1 です。なぜなら、ネストされた配列[1, 2]は長さに計算されないからです。
Syntax
json_length(json_doc[, path])
Parameters
json_doc: 必須、長さを返すための JSON ドキュメント。
path: 任意。ドキュメント内の値の長さを返すために使用されます。パスは一般的に $ で始まり、. をパスの区切りとして使用します。[] は配列の添字として使用され、0 から始まります。
Return value
INT 型の値を返します。
JSON ドキュメントが有効なドキュメントでない場合、エラーが返されます。
以下のいずれかのシナリオでは 0 が返されます。
-
pathがドキュメント内の値を識別しない場合。 -
パスが有効なパス式でない場合。
-
パスに
*または**ワイルドカードが含まれている場合。
Examples
Example 1: スカラー値の長さを返します。
select json_length('1');
+------------------+
| json_length('1') |
+------------------+
| 1 |
+------------------+
Example 2: 空のオブジェクトの長さを返します。
select json_length('{}');
+-------------------+
| json_length('{}') |
+-------------------+
| 0 |
+-------------------+
Example 3: データを持つオブジェクトの長さを返します。
select json_length('{"Name": "Homer"}');
+----------------------------------+
| json_length('{"Name": "Homer"}') |
+----------------------------------+
| 1 |
+----------------------------------+
Example 4: JSON 配列の長さを返します。
select json_length('[1, 2, 3]');
+--------------------------+
| json_length('[1, 2, 3]') |
+--------------------------+
| 3 |
+--------------------------+
Example 5: 要素の一つにネストされた配列がある JSON 配列の長さを返します。
ネストされた配列 [3, 4] は長さに計算されません。
select json_length('[1, 2, [3, 4]]');
+-------------------------------+
| json_length('[1, 2, [3, 4]]') |
+-------------------------------+
| 3 |
+-------------------------------+
Example 6: パス $.Person で指定されたオブジェクトの長さを返します。
SET @file = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
select json_length(@file, '$.Person') 'Result';
Example 7: パス $.y で指定された値の長さを返します。
select json_length('{"x": 1, "y": [1, 2]}', '$.y');
+---------------------------------------------+
| json_length('{"x": 1, "y": [1, 2]}', '$.y') |
+---------------------------------------------+
| 2 |
+---------------------------------------------+