Subject | Re: [firebird-support] Safe way to Concatenate String |
---|---|
Author | Helen Borrie |
Post date | 2007-10-22T09:17:53Z |
At 06:25 PM 22/10/2007, you wrote:
./heLen
>Dear all,It's not as "clunky" as designing a field that is too short.
>
>In one of our stored procs, we have to generate a [document_code] field
> by concatenating several other fields together.
>...
> document_code = project_code || '-' | revision_code
> || '-' ||employee_code || '-' || last_date;
>...
>
>For standardization purposes, all 'code' fields in this database is
>mapped to a domain as VARCHAR(80). Trouble starts when the total length
>of the resulting string is larger than 80 chars, with the following
>error message: "Arithmetic overflow or division by zero occured.
>arithmetic exception, numeric overflow, or string truncation.".
>
>Assuming that we want the first 80 characters of the long string, and
>don't mind chopping off the rest, what's the best way to do this in
>Firebird ?
>
>The alternative that crossed my mind is something like this :
>...
> declare variable temp = varchar(320); //4 fields, 80 each
> ...
> temp = a||b||c||d; //concatenate all 4 fields into temp
> document_code = substring(temp from 1 for 80);
>...
>but it seems a bit... um... clunky :)
./heLen