Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.
JSON_EACH
Tabellenwertfunktion, die eine Tabelle zurückgibt, die aus einer Zeile pro Array-Element oder Objektmember besteht.
Siehe auch:
[SELECT] [DESCRIBE] [JSON_EXTRACT] [JSON_ARRAY_LENGTH] [ Datentypen ]
Verwenden Sie die Funktion DESCRIBE, um array-Datentypen zu finden, die mit der Funktion json_each verwendet werden können.
Die Funktion json_each ist als Funktion json_array_elements_text implementiert, wenn Sie stackql mit einem postgres-SQL-Backend verwenden
Syntax
SELECT <alias>.<projectedField>, ... , json_each.value
FROM <multipartIdentifier> <alias>, JSON_EACH(json_array_or_object, json_path);
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 json_path in json_array_or_object nicht vorhanden ist, gibt die Funktion
NULLzurück.
Die Funktion
json_type()löst einen Fehler aus, wenn eines ihrer Argumente nicht wohlgeformt ist.
Rückgabewert(e)
Eine Tabelle, die aus einer Zeile pro Array-Element oder Objektmember besteht.
Beispiele
Ein Array von Zeichenketten in eine mit zugehörigen Feldern verknüpfte Tabelle entschachteln
zum Kontext:
describe google.cloudresourcemanager.projects_iam_policies;
gibt zurück...
|-----------|--------|
| name | type |
|-----------|--------|
| condition | object |
|-----------|--------|
| members | array |
|-----------|--------|
| role | string |
|-----------|--------|
Die folgende stackql-Abfrage verwendet die Funktion json_each, um das Array members in eine Tabelle zu entschachteln, die mit den Feldern role und optional condition verknüpft ist.
select
iam.role,
SPLIT_PART(json_each.value, ':', 2) as member
from google.cloudresourcemanager.projects_iam_policies iam, json_each(members)
where projectsId = 'stackql';
würde zurückgeben...
|--------------------------------------|-------------------------------------------------------|
| 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 |
|--------------------------------------|-------------------------------------------------------|
| ... | ... |
|--------------------------------------|-------------------------------------------------------|
Weitere Informationen finden Sie unter https://www.sqlite.org/json1.html#jeach