Podemos colocar a função set-returning
unnest()
no SELECT
liste como Raphaël sugere
. Isso costumava exibir problemas de caixa de canto antes do Postgres 10. Veja:Desde o Postgres 9.3, também podemos usar um
LATERAL
junte-se a isso. É a maneira mais limpa e compatível com o padrão de colocar funções de retorno de conjunto no FROM
lista, não no SELECT
Lista:SELECT name, value
FROM tbl, unnest(values) value; -- implicit CROSS JOIN LATERAL
Uma diferença sutil:isso descarta linhas com
values
vazios / NULL do resultado desde unnest()
retorna nenhuma linha , enquanto o mesmo é convertido para um valor NULL no FROM
list e retornou de qualquer maneira. A consulta 100% equivalente é:SELECT t.name, v.value
FROM tbl t
LEFT JOIN unnest(t.values) v(value) ON true;
Ver: