json_length
json_length
説明
JSONドキュメントの長さを返します。パスが指定されている場合、この関数はパスで識別される値の長さを返します。
ドキュメントの長さは次のルールに従って決定されます。
- スカラー値の長さは1です。例えば、
1
、"a"
、true
、false
、null
の長さは1です。 - 配列の長さは配列の要素数です。例えば、
[1, 2]
の長さは2です。 - オブジェクトの長さは オブジェクトのメンバー数です。例えば、
{"a": 1}
の長さは1です。 - ネストされた配列やオブジェクトは含まれません。例えば、
{"a": [1, 2]}
の長さは1です。なぜなら、ネストされた配列[1, 2]
は長さに含まれないからです。
構文
json_length(json_doc[, path])
パラメータ
json_doc
: 必須。長さを返すJSONドキュメント。
path
: オプション。ドキュメント内の値の長さを返すために使用されます。パスは通常、$
で始まり、.
をパスの区切り文字として使用します。[]
は配列の添字として使用され、0から始まります。
戻り値
INT型の値を返します。
JSONドキュメントが正しいドキュメントでない場合は、エラーが返されます。
次のいずれかのシナリオでは、0が返されます。
path
がドキュメント内の値を識別しない場合。- パスが正しいパス式ではない場合。
- パスがワイルドカード
*
または**
を含んでいる場合。
例
例1: スカラー値の長さを返す。
select json_length('1');
+------------------+
| json_length('1') |
+------------------+
| 1 |
+------------------+
例2: 空のオブジェクトの長さを返す。
select json_length('{}');
+-------------------+
| json_length('{}') |
+-------------------+
| 0 |
+-------------------+
例3: データを持つオブジェクトの長さを返す。
select json_length('{"Name": "Homer"}');
+----------------------------------+
| json_length('{"Name": "Homer"}') |
+----------------------------------+
| 1 |
+----------------------------------+
例4: JSON配列の長さを返す。
select json_length('[1, 2, 3]');
+--------------------------+
| json_length('[1, 2, 3]') |
+--------------------------+
| 3 |
+--------------------------+
例5: ネストされた配列を持つJSON配列の長さを返す。
ネストされた配列[3, 4]
は長さに含まれません。
select json_length('[1, 2, [3, 4]]');
+-------------------------------+
| json_length('[1, 2, [3, 4]]') |
+-------------------------------+
| 3 |
+-------------------------------+
例6: パス$.Person
で指定されたオブジェクトの長さを返す。
SET @file = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
select json_length(@file, '$.Person') 'Result';
例7: パス$.y
で指定された値の長さを返す。
select json_length('{"x": 1, "y": [1, 2]}', '$.y');
+---------------------------------------------+
| json_length('{"x": 1, "y": [1, 2]}', '$.y') |
+---------------------------------------------+
| 2 |
+---------------------------------------------+