跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

JSON_ARRAY_LENGTH

返回 JSON 数组中的元素数量。

另请参阅:
[SELECT] [DESCRIBE] [JSON_EXTRACT] [ 数据类型 ]


提示

使用 DESCRIBE 函数查找可用于 StackQL JSON 函数的 array 或 object 数据类型。使用 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_array_or_object 中无法定位 json_path,则返回 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