From: | Oleg Bartunov <obartunov(at)gmail(dot)com> |
---|---|
To: | Dmitriy Olshevskiy <olshevskiy87(at)bk(dot)ru> |
Cc: | pgsql-ru-general(at)postgresql(dot)org, Alexey Kolpakov <al(dot)kolpak(at)gmail(dot)com>, Владимир Комаров <vlads(at)sibnet(dot)ru> |
Subject: | Re: [pgsql-ru-general] Вопрос по построению запросу |
Date: | 2014-10-20 19:36:13 |
Message-ID: | CAF4Au4yycTkDh5_BwRi-uk=n44z=mWMrZEFd8E0WeV9_XE+SmA@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Да поменяйте аргументы в coalesc, я по памяти писал, ошибся. Главное,
идея правильная
On Oct 20, 2014 11:31 PM, "Dmitriy Olshevskiy" <olshevskiy87(at)bk(dot)ru> wrote:
> Здравствуйте, Олег, Владимир и Алексей.
> У меня несколько замечаний, которые я позволю себе высказать.
> 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
>
> 2014-10-20 21:03 GMT+04:00 Alexey Kolpakov <al(dot)kolpak(at)gmail(dot)com>:
>
>> select concat_ws(',', "spr.tovar".*) from spr.tovar
>>
>> 20 октября 2014 г., 20:31 пользователь Владимир Комаров <vlads(at)sibnet(dot)ru>
>> написал:
>>
>> Здраствуйте.
>>>
>>> Есть запрос:
>>>
>>> SELECT * FROM spr.tovar
>>>
>>> Надо вместо «*» поставить некую функцию, которая возвращала только одну
>>> строку типа text, содержащую информацию из всех столбцов таблицы. Т.е.
>>> соединяла их в одну строку.
>>>
>>> Количество столбцов, как и их содержание неизвестно. Так что
>>> предложение на подобии kod||','||name||','||… не подходят.
>>>
>>>
>>>
>>> Пример:
>>>
>>> SELECT * FROM spr.tovar
>>>
>>> X name …
>>>
>>> -----------------------
>>>
>>> 1 tov1 …
>>>
>>> 2 tov2 …
>>>
>>>
>>>
>>> А надо
>>>
>>> SELECT ??? FROM spr.tovar
>>>
>>> Text
>>>
>>> ------------
>>>
>>> 1,tov1,…
>>>
>>> 2,tov2,…
>>>
>>>
>>>
>>>
>>>
>>> Заранее большое спасибо.
>>>
>>
>>
>>
>> --
>> wbr, Alexey Kolpakov
>>
>
>
> --
> Dmitriy Olshevskiy
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Aln Kapa | 2014-10-21 06:01:50 | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Вопрос по построению запросу |
Previous Message | Dmitriy Olshevskiy | 2014-10-20 19:31:21 | Re: Вопрос по построению запросу |