We kunnen de set-retourfunctie unnest()
in de SELECT
list zoals Raphaël suggereert
. Dit vertoonde problemen met hoekkasten vóór Postgres 10. Zie:
Sinds Postgres 9.3 kunnen we ook een gebruiken LATERAL
doe hiervoor mee. Het is de schonere, standaardconforme manier om set-return-functies in de FROM
. te plaatsen lijst, niet in de SELECT
lijst:
SELECT name, value
FROM tbl, unnest(values) value; -- implicit CROSS JOIN LATERAL
Een subtiel verschil:dit laat rijen met lege / NULL values
vallen van het resultaat sinds unnest()
retourneert geen rij , terwijl hetzelfde wordt geconverteerd naar een NULL-waarde in de FROM
lijst en toch teruggestuurd. De 100 % equivalente zoekopdracht is:
SELECT t.name, v.value
FROM tbl t
LEFT JOIN unnest(t.values) v(value) ON true;
Zie: