

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
<a name="filtering-arrays"></a>

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
<a name="filtering-arrays-filter-function"></a>

```
 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]`