

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Filtrage des tableaux
<a name="filtering-arrays"></a>

Créez un tableau à partir d'un ensemble de lignes si elles correspondent aux critères de filtre.

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

Cette requête renvoie :

```
+-------------+
| array_items |
+-------------+
| [4, 5]      |
+-------------+
```

Filtrez un tableau selon que l'un de ses éléments contient une valeur spécifique, telle que 2, comme dans cet exemple :

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

Cette requête renvoie :

```
+--------------+
| array_items  |
+--------------+
| [1, 2, 3, 4] |
+--------------+
```

## Utilisation de la fonction `filter`
<a name="filtering-arrays-filter-function"></a>

```
 filter(ARRAY [{{list_of_values}}], {{boolean_function}})
```

Vous pouvez utiliser la `filter` fonction sur une `ARRAY` expression pour créer un nouveau tableau qui est le sous-ensemble des éléments de {{list\_of\_values}} for dont la valeur {{boolean\_function}} est vraie. La `filter` fonction peut être utile dans les cas où vous ne pouvez pas l'{{UNNEST}}utiliser.

L'exemple suivant filtre les valeurs supérieures à zéro dans le tableau `[1,0,5,-1]`.

```
SELECT filter(ARRAY [1,0,5,-1], x -> x>0)
```

**Résultats**  
`[1,5]`

L'exemple suivant filtre les valeurs non nulles dans le tableau `[-1, NULL, 10, NULL]`.

```
SELECT filter(ARRAY [-1, NULL, 10, NULL], q -> q IS NOT NULL)
```

**Résultats**  
`[-1,10]`