Conditional String Concatenation In PostgreSQL
Answer : The function concat_ws() does exactly what you want. The first parameter is used as glue between the rest. Nulls are ignored: select concat_ws('//', owner_addr1, owner_addr2, owner_addr3) Test: red=# select concat_ws('//', 'abc', null, null, 'xx', null, 'xyz', null) as address; address -------------- abc//xx//xyz (1 row) Probably most obvious to use a CASE statement. There are 4 cases: owner_addr2 IS NULL AND owner_addr3 IS NULL => '' owner_addr2 IS NULL AND owner_addr3 IS NOT NULL => '//' || owner_addr3 owner_addr2 IS NOT NULL AND owner_addr3 IS NULL => '//' || owner_addr2 owner_addr2 IS NOT NULL AND owner_addr3 IS NOT NULL '//' || owner_addr2 || '//' owner_addr3 SELECT owner_addr1 || CASE WHEN owner_addr2 IS NULL AND owner_addr3 IS NULL THEN '' WHEN owner_addr2 IS NULL AND owner_addr3 IS NOT NULL THEN '//'...