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 ]
Utilisez la fonction DESCRIBE pour repérer les types de données array utilisables avec la fonction json_each.
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