UNNEST (Lakehouse v1)
Löst das Array auf und gibt die Menge der Elemente zurück.
Analyze-Syntax
Abschnitt betitelt „Analyze-Syntax“func.unnest( <array> )Analyze-Beispiele
Abschnitt betitelt „Analyze-Beispiele“func.unnest([1, 2])
┌──────────────────────┐│ func.unnest([1, 2]) │├──────────────────────┤│ 1 ││ 2 │└──────────────────────┘SQL-Syntax
Abschnitt betitelt „SQL-Syntax“UNNEST( <array> )SQL-Beispiele
Abschnitt betitelt „SQL-Beispiele“SELECT UNNEST([1, 2]);
┌─────────────────┐│ unnest([1, 2]) │├─────────────────┤│ 1 ││ 2 │└─────────────────┘
-- UNNEST(array) can be used as a table function.SELECT * FROM UNNEST([1, 2]);
┌─────────────────┐│ value │├─────────────────┤│ 1 ││ 2 │└─────────────────┘Ein praktisches Beispiel
Abschnitt betitelt „Ein praktisches Beispiel“In den folgenden Beispielen verwenden wir die Tabelle contacts, deren Spalte phones als Array von Text definiert ist.
CREATE TABLE contacts ( id SERIAL PRIMARY KEY, name VARCHAR (100), phones TEXT []);Die Spalte phones ist ein eindimensionales Array, das verschiedene Telefonnummern enthält, die ein Kontakt haben kann.
Um ein mehrdimensionales Array zu definieren, fügen Sie die eckigen Klammern hinzu.
Beispielsweise können Sie ein zweidimensionales Array wie folgt definieren:
column_name data_type [][]Ein Beispiel für das Einfügen von Daten in diese Tabelle
INSERT INTO contacts (name, phones)VALUES('John Doe',ARRAY [ '(408)-589-5846','(408)-589-5555' ]);oder
INSERT INTO contacts (name, phones)VALUES('Lily Bush','{"(408)-589-5841"}'), ('William Gate','{"(408)-589-5842","(408)-589-5843"}');Die Funktion unnest() erweitert ein Array zu einer Liste von Zeilen. Die folgende Abfrage erweitert beispielsweise alle Telefonnummern des Arrays phones.
SELECT name, unnest(phones)FROM contacts;Ausgabe:
| name | unnest |
|---|---|
| John Doe | (408)-589-5846 |
| John Doe | (408)-589-5555 |
| Lily Bush | (408)-589-5841 |
| William Gate | (408)-589-5843 |