Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creare una matrice da una raccolta di righe nel caso in cui soddisfino i criteri di filtro.
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
Questa query restituisce:
+-------------+
| array_items |
+-------------+
| [4, 5] |
+-------------+
Filtrare una matrice in base al fatto che uno dei suoi elementi contenga un valore specifico, ad esempio 2, come nel seguente esempio:
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)
Questa query restituisce:
+--------------+
| array_items |
+--------------+
| [1, 2, 3, 4] |
+--------------+
Usa la funzione filter
filter(ARRAY [
list_of_values
],boolean_function
)
È possibile utilizzare la filter
funzione su un'ARRAY
espressione per creare un nuovo array che è il sottoinsieme degli elementi in cui list_of_values
for boolean_function
è true. La filter
funzione può essere utile nei casi in cui non è possibile utilizzarlaUNNEST
.
Nell'esempio seguente vengono filtrati i valori maggiori di zero nella matrice [1,0,5,-1]
.
SELECT filter(ARRAY [1,0,5,-1], x -> x>0)
Risultati
[1,5]
Nell'esempio seguente vengono filtrati i valori non-null nella matrice [-1, NULL,
10, NULL]
.
SELECT filter(ARRAY [-1, NULL, 10, NULL], q -> q IS NOT NULL)
Risultati
[-1,10]