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 ]
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-viewerpour 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