Re: Is there a conditional string-concatenation ?
От | Pavel Stehule |
---|---|
Тема | Re: Is there a conditional string-concatenation ? |
Дата | |
Msg-id | AANLkTi=5TVHZ46DpBdW5=fZZJE8PZr6NDiyJYbNsGEnu@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Is there a conditional string-concatenation ? (Osvaldo Kussama <osvaldo.kussama@gmail.com>) |
Список | pgsql-sql |
Hello more simply postgres=# CREATE OR REPLACE FUNCTION public.foo(a text, b text, c text)RETURNS textLANGUAGE sql AS $function$ SELECT coalesce($1 || $2 || $3, $1 || $2, $2 || $3) $function$ Regards Pavel Stehule 2010/10/12 Osvaldo Kussama <osvaldo.kussama@gmail.com>: > 2010/10/12 Andreas <maps.on@gmx.net>: >> Hi, >> Is there a conditional string-concatenation ? >> >> I'd like to have an elegant way to connect 2 strings with some 3rd element >> between only if there really are 2 strings to connect. >> >> e.g. >> MyCat ( 'John', '_', 'Doe' ) --> 'John_Doe' >> while >> MyCat ( 'John', '_', '' ) --> 'John' >> MyCat ( '', '_', 'Doe' ) --> 'Doe' >> MyCat ( '', '_', '' ) --> NULL >> >> It should treat NULL and '' equally as empty >> and it should trim each of the 3 elements. >> >> so >> MyCat ( ' John ', '_', NULL ) --> 'John' >> MyCat ( 'John', NULL, 'Doe' ) --> 'JohnDoe' >> > > > Try: > bdteste=# SELECT nullif(ltrim(rtrim(coalesce(c1,'') || coalesce(c2,'') > || coalesce(c3,''),' _'),' _'),'') > bdteste-# FROM (VALUES ('John', '_', 'Doe'),('John', '_', ''),('', > '_', 'Doe'),('', '_', ''),(' John ', '_', NULL),('John', > NULL, 'Doe')) AS foo(c1,c2,c3); > nullif > ---------- > John_Doe > John > Doe > > John > JohnDoe > (6 rows) > > Osvaldo > > -- > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-sql >
В списке pgsql-sql по дате отправления: