Esta página se tradujo del inglés con ayuda de IA. Si hay diferencias entre ambas, la versión en inglés es la referencia.
JSON_EXTRACT
Devuelve uno o varios valores de un objeto o array JSON bien formado.
Consulte también:
[SELECT] [DESCRIBE] [JSON_ARRAY_LENGTH] [ Tipos de datos ]
La función json_extract se implementa como la función json_extract_path_text si usa stackql con un backend SQL postgres
Sintaxis
SELECT JSON_EXTRACT(json_array_or_object, json_path[, json_path1, .. json_pathN])
FROM <multipartIdentifier>;
Argumentos
json_array_or_object
Un array u objeto JSON.
json_path
La ruta JSON a un array u objeto contenido en json_array_or_object. Consulte jsonpath.com.
Si se proporciona un único json_path, se devuelve un resultado escalar que corresponde al tipo de datos de la ruta resuelta.
Si se proporcionan varios argumentos json_path, el resultado es un array compuesto por los objetos resueltos por las rutas respectivas.
Si se especifica
'$'en el argumento json_path, se devuelve el objeto JSON completo correspondiente a la columna representada por el argumento json_array_or_object.
NOTA: puede usar herramientas como
json-viewerpara desarrollar y probar expresiones JSON Path
Valor(es) devuelto(s)
Una cadena, un entero, un objeto, un array, un booleano o null, según el json_array_or_object y el json_path proporcionados como entrada.
Ejemplos
Devolver los objetos de disco asociados a cada instancia de Google Compute Engine
SELECT name, json_extract(disks, '$') as disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
Devolver el nombre de dispositivo y el tamaño del primer disco conectado a cada instancia de 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';
Devolver el nivel de red de la primera NIC conectada a cada instancia de Google Compute Engine
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';
Devolver una lista de los scopes asociados a la primera cuenta de servicio asociada a cada instancia de 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 */
Para obtener más información, consulte https://www.sqlite.org/json1.html#jex