メインコンテンツまでスキップ
翻訳ページ

このページは AI の支援を受けて英語から翻訳されています。内容が異なる場合は英語版が正となります。

JSON_ARRAY_LENGTH

JSON 配列の要素数を返します。

関連項目:
[SELECT] [DESCRIBE] [JSON_EXTRACT] [ データ型 ]


ヒント

StackQL の JSON 関数で使用できる array または object データ型を見つけるには、DESCRIBE 関数を使用します。ネストされたオブジェクトや配列要素のデータ型を判別するには、JSON_TYPE 関数を使用します。

構文​

SELECT JSON_ARRAY_LENGTH(json_array_or_object [, json_path]) FROM <multipartIdentifier>;

引数​

json_array_or_object
JSON 配列またはオブジェクト。

json_array_or_object が(配列ではなく)JSON オブジェクトで、json_path が指定されていない場合は、0 が返されます。

json_path
オブジェクト内に含まれる配列への JSON パス(省略可能)。jsonpath.com を参照してください。

json_path が指定された場合、json_array_length 関数は json_array_or_object 内でそのパスを特定し、配列の長さを返します。json_path が(配列ではなく)オブジェクトの場合は 0 を返します。json_path が json_array_or_object 内で見つからない場合は、NULL が返されます。

json_array_or_object または json_path が JSON オブジェクトでない場合、または整形式でない場合は、エラーが発生します。

戻り値​

整数を返します。


例​

Google Compute Engine インスタンスにアタッチされたディスクの数を返す​

SELECT name, json_array_length(disks) as num_disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';

Google Compute Engine インスタンスにアタッチされたネットワークインターフェイスの数を返す​

SELECT name, json_array_length(networkInterfaces) as num_nics
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';

Google Storage バケットに関連付けられた ACL の数を返す​

SELECT name, json_array_length(acl) as num_acls
FROM google.storage.buckets
WHERE project = 'stackql';

サービスアカウントに関連付けられたスコープの数を返す​

SELECT name, json_array_length(serviceAccounts, '$[0].scopes') as num_scopes
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';

詳細については、https://www.sqlite.org/json1.html#jarraylen を参照してください。