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: