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_EXTRACT

Renvoie une ou plusieurs valeurs à partir d'un objet ou d'un tableau JSON bien formé.

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


astuce

Utilisez la fonction DESCRIBE pour repérer les types de données array ou object utilisables avec les fonctions JSON de StackQL. Utilisez la fonction JSON_TYPE pour déterminer les types de données des objets imbriqués ou des éléments de tableau.

remarque

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

Syntaxe​

SELECT JSON_EXTRACT(json_array_or_object, json_path[, json_path1, .. json_pathN])
FROM <multipartIdentifier>;

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 un seul json_path est fourni, un résultat scalaire est renvoyé, dont le type de données correspond à celui du chemin résolu.

Si plusieurs arguments json_path sont fournis, le résultat est un tableau composé des objets résolus par les chemins respectifs.

Spécifier '$' pour l'argument json_path renvoie l'objet JSON entier correspondant à la colonne représentée par l'argument json_array_or_object.

REMARQUE : vous pouvez utiliser des outils comme json-viewer pour développer et tester des expressions JSON Path

Valeur(s) renvoyée(s)​

Une chaîne de caractères, un entier, un objet, un tableau, un booléen ou null, selon les arguments json_array_or_object et json_path fournis en entrée.


Exemples​

Renvoyer les objets disque associés à chaque instance Google Compute Engine​

SELECT name, json_extract(disks, '$') as disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';

Renvoyer le nom de périphérique et la taille du premier disque attaché à chaque instance 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';

Renvoyer le niveau de service réseau de la première interface réseau attachée à chaque instance 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';

Renvoyer la liste des scopes associés au premier compte de service associé à chaque instance 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 */

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