メインコンテンツまでスキップ

json_length

json_length

説明

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

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

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