説明
この関数は、JSONドキュメントの長さを返します。pathパラメータが指定されている場合、そのパスで特定されたドキュメント内の値の長さを返します。
構文
JSON_LENGTH(json_doc[, path])
説明
json_docパラメータはJSONドキュメントを指定するために使用され、pathはパスパラメータです。いずれかのパラメータがNULLであるか、pathパラメータがドキュメント内の値を指定していない場合、NULLを返します。
以下の場合、エラーが発生します:
json_docパラメータが有効なJSONドキュメントではない場合。pathパラメータが有効なパス式ではない場合。pathパラメータに*または**ワイルドカードが含まれている場合。
JSONドキュメントの長さは以下のように定義されます:
スカラーの長さは1です。
配列の長さは配列要素の数です。
オブジェクトの長さはオブジェクトメンバーの数です。
ネストされた配列やオブジェクトの長さは計算されません。
例
obclient> SELECT JSON_LENGTH('[1, 2, {"a": 3}, 4]');
+------------------------------------+
| JSON_LENGTH('[1, 2, {"a": 3}, 4]') |
+------------------------------------+
| 4 |
+------------------------------------+
1 row in set
obclient> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 303}}');
+------------------------------------------+
| JSON_LENGTH('{"a": 1, "b": {"c": 303}}') |
+------------------------------------------+
| 2 |
+------------------------------------------+
1 row in set
obclient> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b');
+------------------------------------------------+
| JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b') |
+------------------------------------------------+
| 1 |
+------------------------------------------------+
1 row in set