Zum Hauptinhalt springen
Übersetzte Seite

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 ]


tipp

Verwenden Sie die Funktion DESCRIBE, um array-Datentypen zu finden, die mit der Funktion json_each verwendet werden können.

hinweis

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 NULL zurü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