UNNEST в PostgreSQL: разворачивание массива в строки

В PostgreSQL функция UNNEST используется для преобразования массива в набор строк. Это полезно при работе с данными, хранящимися в массивном формате, когда требуется обработать их поэлементно.

Синтаксис

UNNEST(массив)

Функция принимает массив и возвращает его элементы в виде отдельных строк.

Примеры использования

Разворачивание одномерного массива

SELECT UNNEST(ARRAY['apple', 'banana', 'cherry']);

Результат:

apple
banana
cherry

Использование в запросах с JOIN

UNNEST можно использовать в комбинации с другими таблицами:

SELECT u.name, fruit
FROM users u, UNNEST(u.favorites) AS fruit;

Где favorites — массив любимых фруктов пользователя.

Разворачивание нескольких массивов

Если передано несколько массивов одинаковой длины, UNNEST возвращает соответствующие элементы вместе:

SELECT * FROM UNNEST(ARRAY[1,2,3], ARRAY['a', 'b', 'c']);

Результат:

1 | a
2 | b
3 | c

Обработка NULL-значений

Если массив содержит NULL, он включается в результат:

SELECT UNNEST(ARRAY['one', NULL, 'three']);

Результат:

one
NULL
three