Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.
JSON_EXTRACT
Gibt einen oder mehrere Werte aus einem wohlgeformten JSON-Objekt oder -Array zurück.
Siehe auch:
[SELECT] [DESCRIBE] [JSON_ARRAY_LENGTH] [ Datentypen ]
Die Funktion json_extract ist als Funktion json_extract_path_text implementiert, wenn Sie stackql mit einem postgres-SQL-Backend verwenden
Syntax
SELECT JSON_EXTRACT(json_array_or_object, json_path[, json_path1, .. json_pathN])
FROM <multipartIdentifier>;
Argumente
json_array_or_object
Ein JSON-Array oder -Objekt.
json_path
Der JSON-Pfad zu einem Array oder Objekt, das in json_array_or_object enthalten ist. Siehe jsonpath.com.
Wenn ein einzelner json_path angegeben wird, wird ein skalares Ergebnis zurückgegeben, das dem Datentyp des aufgelösten Pfads entspricht.
Wenn mehrere json_path-Argumente angegeben werden, ist das Ergebnis ein Array aus den Objekten, die durch die jeweiligen Pfade aufgelöst werden.
Die Angabe von
'$'als Argument json_path gibt das gesamte JSON-Objekt zurück, das der durch das Argument json_array_or_object dargestellten Spalte entspricht.
Rückgabewert(e)
Eine Zeichenkette, eine Ganzzahl, ein Objekt, ein Array, ein boolescher Wert oder null, abhängig von den als Eingabe übergebenen json_array_or_object und json_path.
Beispiele
Die jeder Google Compute Engine-Instanz zugeordneten Laufwerksobjekte zurückgeben
SELECT name, json_extract(disks, '$') as disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
Den Gerätenamen und die Größe des ersten an jede Google Compute Engine-Instanz angehängten Laufwerks zurückgeben
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';
Die Netzwerkstufe der ersten an jede Google Compute Engine-Instanz angehängten NIC zurückgeben
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';
Eine Liste der Scopes zurückgeben, die dem ersten Dienstkonto jeder Google Compute Engine-Instanz zugeordnet sind
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 */
Weitere Informationen finden Sie unter https://www.sqlite.org/json1.html#jex