Re: Trim not working (PostgreSQL 9.1.2 on Win64) - Mailing list pgsql-general

From Edson Richter
Subject Re: Trim not working (PostgreSQL 9.1.2 on Win64)
Date
Msg-id BLU0-SMTP21EA599C5A6E12FA63CC6CCFC00@phx.gbl
Whole thread Raw
In response to Re: Trim not working (PostgreSQL 9.1.2 on Win64)  (Adrian Klaver <adrian.klaver@gmail.com>)
Responses Re: Trim not working (PostgreSQL 9.1.2 on Win64)
Re: Trim not working (PostgreSQL 9.1.2 on Win64)
List pgsql-general
Em 28/07/2012 13:46, Adrian Klaver escreveu:
> On 07/27/2012 04:58 PM, Edson Richter wrote:
>> I've a select with the following expression:
>>
>> select trim(both ' ' from substring(rslinha2 from 5 for position('(-)'
>> in rslinha2)-6))
>>             from ...
>>
>> problem is that the spaces are not being removed from either side. What
>> would be wrong?
>
> FYI the '' is redundant, empty spaces are removed by default.
> Some examples of what is in rslinha2 before the above and what you are
> seeing after would help.
>
>>
>> Thanks for your help,
>> --
>>
>> *Edson Carlos Ericksson Richter*
>> /SimKorp Informática Ltda/
>> Fone:     (51) 3366-7964
>> Celular:     (51)9318-9766/(51) 8585-0796
>> Embedded Image
>>
>>
>
>
Yes, I know the redundancy. Nevertheless, it did not work.
The information about the data follows:

rslinha2 character varying

content for rslinha2 (this is one of several, but they are similar -
data has been imported into this field from file using foreign table
with file_fdw):

"2. TAXA VIGILANCIA                                   (+) R$ 13,00"

resulting substring expression is:

" TAXA VIGILANCIA                                   "

(1 space at beginning, and several after)

If I do apply trim over the substring, no spaces are removed, and I
cannot understand why.

Complete (not working) expression are:


-------------------------------------------------------------------------------------------------------------------------
select trim(both ' ' from substring(rslinha2 from 5 for position('(+)'
in rslinha2)-6))
             from ...

-------------------------------------------------------------------------------------------------------------------------

or


-------------------------------------------------------------------------------------------------------------------------
select trim(substring(rslinha2 from 5 for position('(+)' in rslinha2)-6))
             from ...

-------------------------------------------------------------------------------------------------------------------------

But using the regular expression matching "^\s*" and "\s*$" works, and
spaces are removed:


-------------------------------------------------------------------------------------------------------------------------
select regexp_replace(regexp_replace(substring(rslinha2 from 5 for
position('(+)' in rslinha2)-6)), '^\s*', ''), '\s*$', '');

-------------------------------------------------------------------------------------------------------------------------


Maybe I've hit a bug in Postgres, or just I could not fully understand
the usage for trim (I admit, I was expecting trim to behave like in MS
SQL or Java).


Edson.


pgsql-general by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Replication/cloning: rsync vs modification dates?
Next
From: Tom Lane
Date:
Subject: Re: Trim not working (PostgreSQL 9.1.2 on Win64)