JSON_LENGTH 関数は、指定されたパスにある JSON データの長さを返します。
コマンドフォーマット
BIGINT JSON_LENGTH(JSON <json> [, STRING <json_path>])
-- 標準例。
-- 2 を返します。
SELECT JSON_LENGTH(JSON '{"k1":"v31","k2":300}');パラメーター
json:必須。JSON データ。データの型は JSON です。
json_path:任意。JSON データへのパス。このパラメーターのデータの型は STRING です。このパラメーターを指定しない場合、関数はデフォルトで JSON データ全体の長さを返します。
戻り値
次のルールに基づいて BIGINT 型の値を返します:
json が JSON 配列の場合、関数は配列内の要素数を返します。
json が JSON オブジェクトの場合、関数はオブジェクト内のメンバー数を返します。
json データが JSON 配列でも JSON オブジェクトでもない場合、関数は 1 を返します。
json または json_path が null の場合、関数は null を返します。
この関数は、ネストされた配列またはオブジェクト内の要素やメンバーをカウントしません。
例
例 1:基本的な例
-- 2 を返します。 SELECT JSON_LENGTH(JSON '{"k1":"v31","k2":300}'); -- 6 を返します。 SELECT JSON_LENGTH(JSON '[1,2,3,4,5,6]'); -- 3 を返します。ネストされた配列またはオブジェクトの長さは考慮されません。 SELECT JSON_LENGTH( JSON '{"name": "John", "age": 22, "skills":["PHP","MySQL","JavaScript"]}' ); -- 2 を返します。 SELECT JSON_LENGTH(JSON '{"x": 1, "y": [1, 2]}', '$.y'); -- null を返します。 SELECT JSON_LENGTH(null);例 2:json データが JSON 配列でも JSON オブジェクトでもない場合、関数は 1 を返します。
-- 1 を返します。 SELECT JSON_LENGTH(JSON 'null'); -- 1 を返します。 SELECT JSON_LENGTH(JSON '123'); -- 1 を返します。 SELECT JSON_LENGTH(JSON '123.34'); -- 1 を返します。 SELECT JSON_LENGTH(JSON 'true');
関連関数
JSON_LENGTH は JSON 関数です。その他の JSON 関数の詳細については、「JSON 関数」をご参照ください。