Re: String concatenation operator which keeps trailing spaces in CHAR(n) columns

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

In response to

Responses

Browse pgsql-general by date

  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