Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Filtern von Arrays
Erstellen Sie ein Array aus einer Reihe von Zeilen, die den Filterkriterien entsprechen.
WITH dataset AS ( SELECT ARRAY[1,2,3,4,5] AS items ) SELECT array_agg(i) AS array_items FROM dataset CROSS JOIN UNNEST(items) AS t(i) WHERE i > 3
Diese Abfrage gibt Folgendes zurück:
+-------------+
| array_items |
+-------------+
| [4, 5] |
+-------------+Filtern Sie ein Array basierend darauf, ob Elemente einen bestimmten Wert (z. B. 2) enthalten, wie in diesem Beispiel:
WITH dataset AS ( SELECT ARRAY [ ARRAY[1,2,3,4], ARRAY[5,6,7,8], ARRAY[9,0] ] AS items ) SELECT i AS array_items FROM dataset CROSS JOIN UNNEST(items) AS t(i) WHERE contains(i, 2)
Diese Abfrage gibt Folgendes zurück:
+--------------+
| array_items |
+--------------+
| [1, 2, 3, 4] |
+--------------+
Funktion filter verwenden
filter(ARRAY [list_of_values],boolean_function)
Sie können die filter Funktion für einen ARRAY Ausdruck verwenden, um ein neues Array zu erstellen, das die Teilmenge der Elemente darstellt, list_of_values für die wahr boolean_function ist. Die filter Funktion kann in Fällen nützlich sein, in denen Sie die UNNEST Funktion nicht verwenden können.
Im folgenden Beispiel wird im Array [1,0,5,-1] nach Werten größer als Null gefiltert.
SELECT filter(ARRAY [1,0,5,-1], x -> x>0)
Ergebnisse
[1,5]
Im folgenden Beispiel wird im Array [-1, NULL,
10, NULL] nach Werten ungleich Null gefiltert.
SELECT filter(ARRAY [-1, NULL, 10, NULL], q -> q IS NOT NULL)
Ergebnisse
[-1,10]