メインコンテンツまでスキップ
バージョン: Candidate-3.5

json_length

JSON ドキュメントの長さを返します。パスが指定されている場合、この関数はパスで識別される値の長さを返します。

ヒント

すべての JSON 関数と Operator はナビゲーションと overview page に一覧されています。

クエリを 生成列 で高速化しましょう。

ドキュメントの長さは以下のルールに従って決定されます。

  • スカラー値の長さは 1 です。例えば、1"a"truefalsenull の長さは 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 |
+---------------------------------------------+