Здравствуйте, Олег, Владимир и Алексей.
У меня несколько замечаний, которые я позволю себе высказать.
1.
>> select concat_ws(',', t.*) from spr.tovar t;
select t::text from spr.tovar t;
оба запроса по сути делают одно и то же, но второй заметно короче.
2.
>> select concat_ws(',', coalesce('', spr.tovar.*)) from spr.tovar
У coalesce здесь на первом месте константа '', а не проверяемое значение.
В таком случае результатом всегда будет пустая строка, потому что она не null.
3.
с таким coalesce postgres будет ругаться на круглые скобки (DETAIL:
Missing left parenthesis), указывая на первый апостроф пустой строки, т.е
он будет ожидать тип записи таблицы spr.tovar.
4.
честно говоря, у меня нет своего решения, но вот тут нашел одно
довольное интересное
http://stackoverflow.com/questions/11469059/postgresql-return-entire-row-as-array т.е. в вашем случае, Владимир, можно написать так:
select array_to_string(
translate(
string_to_array(t::text,',')::text, '()', ''
)::text[], ','
)
from spr.tovar t
Проверял на postgresql 9.3.4.
Если в чем-то неправ, прошу объяснить почему. Спасибо)
On 20.10.2014 21:29, Oleg Bartunov wrote:
Не забываем про coalesce(), если не хотите удивляться !
select concat_ws(',', coalesce('', spr.tovar.*)) from spr.tovar
--
Dmitriy Olshevskiy