On Wed, 6 Jun 2007, Woody Woodring wrote:
> I am seeing weirdness using the trim function on a string:
>
> This works as expected:
>
> SELECT 'dhct:bn', trim(leading 'dhct:' from 'dhct:bn');
> ?column? | ltrim
> ----------+-------
> dhct:bn | bn
> (1 row)
>
> However it fails for these cases:
>
> SELECT 'dhct:dn', trim(leading 'dhct:' from 'dhct:dn');
> ?column? | ltrim
> ----------+-------
> dhct:dn | n
> (1 row)
The 8.2 docs give this as the description in the table:
"Remove the longest string containing only the characters (a space by
default) from the start/end/both ends of the string"
That implies that with characters 'dhct:' the string to remove is 'dhct:d'
because that's the longest leading string made up of those characters.
Maybe a form using something like regexp_replace might work better for
you.