Thread: How to build this field

How to build this field

From
juerg.rietmann@pup.ch
Date:
Hi everybody

I need to build an additional field (metakey) out of three fields in the
table.

SELECT a.a_kurzbez, a.a_ausgabenr, a.a_bundnr, a.a_nr, a.a_z_blaenge,
a.a_z_laenge, a.a_z_umfang  FROM auftrag a

should be changed to something like

SELECT (a.a_kurzbez + a.a_ausgabenr + a.a_bundnr) as metakey, a.a_kurzbez,
a.a_ausgabenr, a.a_bundnr, a.a_nr, a.a_z_blaenge, a.a_z_laenge,
a.a_z_umfang  FROM auftrag a


output :

field :   metakey                a_kurzbez           a_ausgabenr
a_bundnr
    DMD 001 03         DMD                     001
03

Thanks for any help ... jr

============================================
PFISTER + PARTNER, SYSTEM - ENGINEERING AG
Juerg Rietmann
Grundstrasse 22a
6343 Rotkreuz
Switzerland

phone: +4141 790 4040
fax: +4141 790 2545
mobile: +4179 211 0315
============================================



Re: How to build this field

From
Christof Glaser
Date:
Hi Juerg,

> I need to build an additional field (metakey) out of three fields in
> the table.
>
> SELECT a.a_kurzbez, a.a_ausgabenr, a.a_bundnr, a.a_nr, a.a_z_blaenge,
> a.a_z_laenge, a.a_z_umfang  FROM auftrag a
>
> should be changed to something like
>
> SELECT (a.a_kurzbez + a.a_ausgabenr + a.a_bundnr) as metakey,
> a.a_kurzbez, a.a_ausgabenr, a.a_bundnr, a.a_nr, a.a_z_blaenge,
> a.a_z_laenge, a.a_z_umfang  FROM auftrag a

Try the following:

SELECT a.a_kurzbez || ' ' || a.a_ausgabenr::text || ' ' || a.a_bundnr::text as metakey,... remainder as above

or, if you need that frequently, create a function:

CREATE FUNCTION metakey (text, int4, int4) returns text as 
' SELECT $1 || ' ' || text($2) || ' ' || text($3) '
LANGUAGE 'sql';

|| is the "concatenate text" operator.

Change the param types and cast them as you need.

Hope that helps,

Christof.

> output :
>
> field :   metakey                a_kurzbez           a_ausgabenr
> a_bundnr
>
>      DMD 001 03         DMD                     001
> 03


--          gl.aser . software engineering . internet service      http://gl.aser.de/  . Planckstraße 7 . D-39104
Magdeburg
Tel. +49.391.7 44 77 10 . Fax +49.391.7 44 77 13 . Mobil 0177.77 92 84 3


Re: How to build this field

From
Christof Glaser
Date:
Josh,

> > [ stuff deleted ]
> > CREATE FUNCTION metakey (text, int4, int4) returns text as
> > ' SELECT $1 || ' ' || text($2) || ' ' || text($3) '
> > LANGUAGE 'sql';
> >
> > || is the "concatenate text" operator.
> >
> > Change the param types and cast them as you need.
>
> ... But keep in mind that if any of the above values are NULL, the
> whole expression will be NULL.  If one or more of the columns allows
> NULLs, you will need a function that includes testing for NULL.
>
> -Josh Berkus

Thanks for the hint. COALESCE is your friend, then :)

Christof.
--          gl.aser . software engineering . internet service      http://gl.aser.de/  . Planckstraße 7 . D-39104
Magdeburg
Tel. +49.391.7 44 77 10 . Fax +49.391.7 44 77 13 . Mobil 0177.77 92 84 3