翻译页面
本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。
JSON_EXTRACT
从格式正确的 JSON 对象或数组中返回一个或多个值。
另请参阅:
[SELECT] [DESCRIBE] [JSON_ARRAY_LENGTH] [ 数据类型 ]
备注
如果你将 stackql 与 postgres SQL 后端一起使用,json_extract 函数将实现为 json_extract_path_text 函数
语法
SELECT JSON_EXTRACT(json_array_or_object, json_path[, json_path1, .. json_pathN])
FROM <multipartIdentifier>;
参数
json_array_or_object
JSON 数组或对象。
json_path
指向 json_array_or_object 内所含数组或对象的 JSON 路径。请参阅 jsonpath.com。
如果只提供一个 json_path,则返回一个标量结果,其数据类型与解析出的路径相对应。
如果提供多个 json_path 参数,则结果是一个数组,由各个路径解析出的对象组成。
将 json_path 参数指定为
'$'时,将返回 json_array_or_object 参数所表示的列对应的整个 JSON 对象。
返回值
字符串、整数、对象、数组、布尔值或 null,取决于作为输入提供的 json_array_or_object 和 json_path。
示例
返回与每个 Google Compute Engine 实例关联的磁盘对象
SELECT name, json_extract(disks, '$') as disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
返回附加到每个 Google Compute Engine 实例的第一个磁盘的设备名称和大小
SELECT name, json_extract(disks, '$[0].deviceName') as device_name,
json_extract(disks, '$[0].diskSizeGb') as disk_size
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
返回附加到每个 Google Compute Engine 实例的第一个 NIC 的网络层级
SELECT name, json_extract(networkInterfaces, '$[0].accessConfigs[0].networkTier') as network_tier
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
返回与每个 Google Compute Engine 实例关联的第一个服务账号所关联的作用域列表
SELECT name, json_extract(serviceAccounts, '$[0].scopes') as scopes
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
/* returns a list for each service account */
有关更多信息,请参阅 https://www.sqlite.org/json1.html#jex