From: | Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | Andrus *EXTERN* <kobruleht2(at)hot(dot)ee>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: String concatenation operator which keeps trailing spaces in CHAR(n) columns |
Date: | 2014-07-30 11:07:08 |
Message-ID: | A737B7A37273E048B164557ADEF4A58B17D214C0@ntex2010i.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Andrus wrote:
> How to create string concatenation operator which preserves trailing spaces
> on CHAR(n) type columns ?
>
> I tried code below, but it returns AB (without spaces).
> How to force it to return A B (keep space after A) ?
>
> Andrus.
>
> CREATE OR REPLACE FUNCTION public.stringconcat(left text, right text)
> RETURNS text
> LANGUAGE sql IMMUTABLE
> AS $BODY$
> SELECT concat($1, $2) ;
> $BODY$;
>
> CREATE OPERATOR public.+ (
> leftarg = text,
> rightarg = text,
> procedure = public.stringconcat
> );
>
> create temp table test (col1 char(2)) on commit drop;
> insert into test values ('A');
> select col1 + 'B'
> from test;
>
>
> I posted similar question also in
>
> http://stackoverflow.com/questions/24975118/how-to-create-string-concatenation-operator-which-
> preserves-trailing-spaces-in-c
Use "bpchar" instead of "text" in the definition of function and operator.
Otherwise col1 gets cast to "text" and loses its trailing spaces.
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Andrus | 2014-07-30 11:46:19 | Re: String concatenation operator which keeps trailing spaces in CHAR(n) columns |
Previous Message | Andrus | 2014-07-30 10:43:39 | String concatenation operator which keeps trailing spaces in CHAR(n) columns |