Saltar al contenido principal
Página traducida

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_EACH

Función con valores de tabla que devuelve una tabla formada por una fila por cada elemento del array o miembro del objeto.

Consulte también:
[SELECT] [DESCRIBE] [JSON_EXTRACT] [JSON_ARRAY_LENGTH] [ Tipos de datos ]


consejo

Use la función DESCRIBE para localizar los tipos de datos array que se pueden usar con la función json_each.

nota

La función json_each se implementa como la función json_array_elements_text si usa stackql con un backend SQL postgres

Sintaxis​

SELECT <alias>.<projectedField>, ... , json_each.value
FROM <multipartIdentifier> <alias>, JSON_EACH(json_array_or_object, json_path);

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 json_path no existe en json_array_or_object, la función devuelve NULL.

La función json_type() genera un error si alguno de sus argumentos no está bien formado.

Valor(es) devuelto(s)​

Una tabla formada por una fila por cada elemento del array o miembro del objeto.


Ejemplos​

Desanidar un array de cadenas en una tabla con un join a los campos asociados​

como contexto:

describe google.cloudresourcemanager.projects_iam_policies;

devuelve...

|-----------|--------|
| name | type |
|-----------|--------|
| condition | object |
|-----------|--------|
| members | array |
|-----------|--------|
| role | string |
|-----------|--------|

La siguiente consulta de stackql usa la función json_each para desanidar el array members en una tabla con un join a los campos role y, opcionalmente, condition.

select
iam.role,
SPLIT_PART(json_each.value, ':', 2) as member
from google.cloudresourcemanager.projects_iam_policies iam, json_each(members)
where projectsId = 'stackql';

devolvería...

|--------------------------------------|-------------------------------------------------------|
| role | member |
|--------------------------------------|-------------------------------------------------------|
| roles/cloudbuild.builds.builder | 1234567890@cloudbuild.gserviceaccount.com |
|--------------------------------------|---------------------------------------------- --------|
| roles/editor | 1234567890-compute@developer.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| roles/editor | 1234567890@cloudservices.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| roles/editor | stackql@appspot.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| ... | ... |
|--------------------------------------|-------------------------------------------------------|

Para obtener más información, consulte https://www.sqlite.org/json1.html#jeach