Можем да поставим функцията за връщане на набор unnest()
в SELECT
списък както Raphaël предлага
. Преди Postgres 10 това показваше проблеми с ъгловия регистър. Вижте:
От Postgres 9.3 можем също да използваме LATERAL
присъединете се за това. Това е по-чистият, съвместим със стандартите начин за поставяне на връщащи набор функции в FROM
списък, а не в SELECT
списък:
SELECT name, value
FROM tbl, unnest(values) value; -- implicit CROSS JOIN LATERAL
Една фина разлика:това изпуска редове с празни / NULL values
от резултата след unnest()
връща няма ред , докато същото се преобразува в NULL стойност в FROM
списък и въпреки това се върна. 100% еквивалентната заявка е:
SELECT t.name, v.value
FROM tbl t
LEFT JOIN unnest(t.values) v(value) ON true;
Вижте: