Re: Concatenation with separator
From: Robert Klemme <shortcutter_at_googlemail.com>
Date: Wed, 04 Feb 2009 21:24:16 +0100
Message-ID: <6uubrlFgq5vbU1_at_mid.individual.net>
On 04.02.2009 19:42, ddf wrote:
> On Feb 4, 12:03 pm, "�lvaro G. Vicario"
> <alvaro.NOSPAMTH..._at_demogracia.com> wrote:
from
from
Date: Wed, 04 Feb 2009 21:24:16 +0100
Message-ID: <6uubrlFgq5vbU1_at_mid.individual.net>
On 04.02.2009 19:42, ddf wrote:
> On Feb 4, 12:03 pm, "�lvaro G. Vicario"
> <alvaro.NOSPAMTH..._at_demogracia.com> wrote:
> I have a series of VARCHAR2 columns that might be null or not. Is there
> a simple way to concatenate them using a separator only between non-null values?
I am bit irritated by this requirement: with this approach you won't be able to tell from which DB field a value came. If you do a CSV import in some other database or other tool, values from the same column will not properly align. Is this really what you want?
> And you're very welcome, it's an enjoyable exercise.
:-) Another approach using good old CASE and RTRIM:
select rtrim(
case when country is null then '' else country || ';' end || case when city is null then '' else city || ';' end || case when district is null then '' else district || ';' end || case when street is null then '' else street end, ';') csv
from
location
You can probably achieve the same with DECODE:
select rtrim( decode(country , null, '', country || ';') || decode(city , null, '', city || ';') || decode(district, null, '', district || ';') || decode(street , null, '', street), ';') csv
from
location
Note: both untested.
Cheers
robert Received on Wed Feb 04 2009 - 14:24:16 CST