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: