Re: How concat 3 strings if 2 are not empty?

Поиск
Список
Период
Сортировка
От A. Kretschmer
Тема Re: How concat 3 strings if 2 are not empty?
Дата
Msg-id 20090218120805.GA17440@a-kretschmer.de
обсуждение исходный текст
Ответ на How concat 3 strings if 2 are not empty?  (Andreas <maps.on@gmx.net>)
Ответы Re: How concat 3 strings if 2 are not empty?  (Andreas <maps.on@gmx.net>)
Список pgsql-sql
In response to Andreas :
> Hi,
> 
> I'd like a function that concats 3 string parameters on condition the 
> 1st and 3rd are NOT empty or NULL.
> xCat (s1, s2, s3)
> s2 would be a connector that appears only if s1 and s3 are set.
> 
> NULL and an empty string '' should be handled the same.
> 
> e.g.
> 'PostgreSQL',  ' is ', ' great'    -->     'PostgreSQL is great'
> NULL,  ' is ', ' great'              -->     'great'
> 'PostgreSQL',  ' is ', NULL    -->     'PostgreSQL'
> NULL,  ' is ', NULL              -->     NULL
> 'PostgreSQL',  NULL, ' great'    -->     'PostgreSQL great'

Something like that?

test=*# select a,b,c, length(a), length(b), length(c) from string ;    a      | b  |   c   | length | length | length
------------+----+-------+--------+--------+--------PostgreSQL | is | great |     10 |      2 |      5PostgreSQL | is |
     |     10 |      2 |PostgreSQL |    |       |     10 |        |           | is |       |        |      2 |
| is |       |      0 |      2 |           | is |       |      0 |      2 |      0
 
(6 rows)

test=*#
test=*# select case when (a is null and c is null) or (a = '' and c = '') then null else coalesce(a,'') ||
coalesce(b,'')||coalesce(c,'')end from string;      case
 
-------------------PostgreSQLisgreatPostgreSQLisPostgreSQL
is

(6 rows)



Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net


В списке pgsql-sql по дате отправления:

Предыдущее
От: Andreas
Дата:
Сообщение: How concat 3 strings if 2 are not empty?
Следующее
От: Andreas
Дата:
Сообщение: Re: How concat 3 strings if 2 are not empty?