Thread: How to build this field
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 ============================================
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
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