Vi kan sætte sæt-retur-funktionen unnest()
ind i SELECT
liste som Raphaël foreslår
. Dette plejede at udstille problemer med hjørnehus før Postgres 10. Se:
Siden Postgres 9.3 kan vi også bruge en LATERAL
være med til dette. Det er den renere, standard-kompatible måde at indsætte sæt-returnerende funktioner i FROM
listen, ikke i SELECT
liste:
SELECT name, value
FROM tbl, unnest(values) value; -- implicit CROSS JOIN LATERAL
Én subtil forskel:dette taber rækker med tomme / NULL values
fra resultatet siden unnest()
returnerer ingen række , mens den samme konverteres til en NULL-værdi i FROM
liste og returneres alligevel. Den 100 % tilsvarende forespørgsel er:
SELECT t.name, v.value
FROM tbl t
LEFT JOIN unnest(t.values) v(value) ON true;
Se: