Aller au contenu

Déploie le tableau et renvoie l’ensemble de ses éléments.

func.unnest( <array> )
func.unnest([1, 2])
┌──────────────────────┐
│ func.unnest([1, 2]) │
├──────────────────────┤
│ 1 │
│ 2 │
└──────────────────────┘
UNNEST( <array> )
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 │
└─────────────────┘

Dans les exemples ci-dessous, nous utilisons la table suivante, nommée contacts, dont la colonne phones est définie comme un tableau de texte.

CREATE TABLE contacts (
id SERIAL PRIMARY KEY,
name VARCHAR (100),
phones TEXT []
);

La colonne phones est un tableau à une dimension qui contient les différents numéros de téléphone d’un contact.

Pour définir un tableau à plusieurs dimensions, ajoutez des crochets.

Par exemple, vous pouvez définir un tableau à deux dimensions comme suit :

column_name data_type [][]

Exemple d’insertion de données dans cette table

INSERT INTO contacts (name, phones)
VALUES('John Doe',ARRAY [ '(408)-589-5846','(408)-589-5555' ]);

ou

INSERT INTO contacts (name, phones)
VALUES('Lily Bush','{"(408)-589-5841"}'),
('William Gate','{"(408)-589-5842","(408)-589-5843"}');

La fonction unnest() déploie un tableau en une liste de lignes. Par exemple, la requête suivante déploie tous les numéros de téléphone du tableau phones.

SELECT
name,
unnest(phones)
FROM
contacts;

Résultat :

name unnest
John Doe (408)-589-5846
John Doe (408)-589-5555
Lily Bush (408)-589-5841
William Gate (408)-589-5843