Обсуждение: trim(both) problem?
Hi, Isn't this a bug about trim both. select trim(both '<BR/>' from '<BR/>ROI Engineering Inc.'); btrim --------------------- OI Engineering Inc. (1 row) "R" is missing? How? version ------------------------------------------------------------------------- PostgreSQL 8.0.15 on i686-pc-linux-gnu, compiledby GCC gcc (GCC) 3.3.2 Thank you!
Emi Lu <emilu@encs.concordia.ca> writes:
> select trim(both '<BR/>' from '<BR/>ROI Engineering Inc.');
> btrim
> ---------------------
> OI Engineering Inc.
> (1 row)
> "R" is missing? How?
The first argument of trim is a set, not a sequence --- it means trim
any characters belonging to this set.
regards, tom lane
On Fri, 25 Apr 2008, Emi Lu wrote: > Hi, > > Isn't this a bug about trim both. > > select trim(both '<BR/>' from '<BR/>ROI Engineering Inc.'); > btrim > --------------------- > OI Engineering Inc. > (1 row) > > > "R" is missing? How? Trim doesn't do what you think it does. The '<BR/>' in the above is not a string to remove it is a list of characters to remove. Thus, the R is removed as it matches a character given.
> -----Mensaje original-----
> De: pgsql-sql-owner@postgresql.org
> [mailto:pgsql-sql-owner@postgresql.org] En nombre de Stephan Szabo
> Enviado el: Viernes, 25 de Abril de 2008 17:46
> Para: Emi Lu
> CC: pgsql-sql@postgresql.org
> Asunto: Re: [SQL] trim(both) problem?
>
> On Fri, 25 Apr 2008, Emi Lu wrote:
>
> > Hi,
> >
> > Isn't this a bug about trim both.
> >
> > select trim(both '<BR/>' from '<BR/>ROI Engineering Inc.');
> > btrim
> > ---------------------
> > OI Engineering Inc.
> > (1 row)
> >
> >
> > "R" is missing? How?
>
> Trim doesn't do what you think it does. The '<BR/>' in the
> above is not a string to remove it is a list of characters to
> remove. Thus, the R is removed as it matches a character given.
>
You could probably use instead:
select replace('<BR/>ROI Engineering Inc.', '<BR/>', '')
"Fernando Hevia" <fhevia@ip-tel.com.ar> writes:
>> Trim doesn't do what you think it does. The '<BR/>' in the
>> above is not a string to remove it is a list of characters to
>> remove. Thus, the R is removed as it matches a character given.
> You could probably use instead:
> select replace('<BR/>ROI Engineering Inc.', '<BR/>', '')
That would zap occurrences in the middle of the string, though.
regexp_replace would be better since it'd allow anchoring the
pattern, eg
select regexp_replace('<BR/>ROI Engineering Inc.', '^<BR/>', '');
select regexp_replace('ROI Engineering Inc.<BR/>', '<BR/>$', '');
regards, tom lane
--- Emi Lu <emilu@encs.concordia.ca> wrote:
> Isn't this a bug about trim both.
>
> select trim(both '<BR/>' from '<BR/>ROI Engineering Inc.');
> btrim
> ---------------------
> OI Engineering Inc.
> (1 row)
>
>
> "R" is missing? How?
you misread - '<BR/>' argument is a list of characters, _not_ a string.change 'ROI' to 'XOI' and you'll see.
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
Thanks a lot for all help! I understand how trim work now.
>> You could probably use instead:
>> select replace('<BR/>ROI Engineering Inc.', '<BR/>', '')
> That would zap occurrences in the middle of the string, though.
> regexp_replace would be better since it'd allow anchoring the
> pattern, eg
>
> select regexp_replace('<BR/>ROI Engineering Inc.', '^<BR/>', '');
> select regexp_replace('ROI Engineering Inc.<BR/>', '<BR/>$', '');
This is exactly I am looking for, but my version
PostgreSQL 8.0.15 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.2
does not support this func, and have to think about the other way to
'trim' the ^<BR/> & <BR>$
Thank you again!