Aller au contenu principal
Page traduite

Cette page a été traduite de l'anglais avec l'aide de l'IA. En cas de divergence, la version anglaise fait référence.

JSON_EACH

Fonction à valeur de table qui renvoie une table composée d'une ligne pour chaque élément de tableau ou membre d'objet.

Voir aussi :
[SELECT] [DESCRIBE] [JSON_EXTRACT] [JSON_ARRAY_LENGTH] [ Types de données ]


astuce

Utilisez la fonction DESCRIBE pour repérer les types de données array utilisables avec la fonction json_each.

remarque

La fonction json_each est implémentée par la fonction json_array_elements_text si vous utilisez stackql avec un backend SQL postgres

Syntaxe​

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

Arguments​

json_array_or_object
Un tableau ou un objet JSON.

json_path
Le chemin JSON vers un tableau ou un objet contenu dans json_array_or_object. Consultez jsonpath.com.

Si json_path n'existe pas dans json_array_or_object, la fonction renvoie NULL.

La fonction json_type() lève une erreur si l'un de ses arguments n'est pas bien formé.

Valeur(s) renvoyée(s)​

Une table composée d'une ligne pour chaque élément de tableau ou membre d'objet.


Exemples​

Désimbriquer un tableau de chaînes de caractères en une table jointe aux champs associés​

à titre de contexte :

describe google.cloudresourcemanager.projects_iam_policies;

renvoie...

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

La requête stackql suivante utilise la fonction json_each pour désimbriquer le tableau members en une table jointe aux champs role et, éventuellement, 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';

renverrait...

|--------------------------------------|-------------------------------------------------------|
| 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 |
|--------------------------------------|-------------------------------------------------------|
| ... | ... |
|--------------------------------------|-------------------------------------------------------|

Pour plus d'informations, consultez https://www.sqlite.org/json1.html#jeach