BUG #16507: RTRIM function doesnt behave as expected for certain scenario

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

BUG #16507: RTRIM function doesnt behave as expected for certain scenario

PG Doc comments form
The following bug has been logged on the website:

Bug reference:      16507
Logged by:          Chetan Burande
Email address:      [hidden email]
PostgreSQL version: Unsupported/Unknown
Operating system:   Linux
Description:        

Hi Team,

I am trying to use RTIM function on a String (Column data) to remove some
character/string from the right end.

Example -
select column_name, RTRIM(column_name, '-1') from table_name;
 column_name | rtrim
-----------------------------------------+---------------------------------------
test-2020_03_01-2020_03_31-1 | test-2020_03_01-2020_03_3
test-2019_02_01-2019_02_28-1 | test-2019_02_01-2019_02_28
test-2019_04_01-2019_04_30-1 | test-2019_04_01-2019_04_30

In case of the first string, RTRIM is removing "1-1" instead of "-1".
I expect it to remove "-1" as it did in other strings.

Please let me know if you need any further information.

Thanks,
Chetan

Reply | Threaded
Open this post in threaded view
|

Re: BUG #16507: RTRIM function doesnt behave as expected for certain scenario

Tom Lane-2
PG Bug reporting form <[hidden email]> writes:
> I am trying to use RTIM function on a String (Column data) to remove some
> character/string from the right end.
> Example -
> select column_name, RTRIM(column_name, '-1') from table_name;
> In case of the first string, RTRIM is removing "1-1" instead of "-1".
> I expect it to remove "-1" as it did in other strings.

Your expectation is wrong, per the function's documentation:

        Removes the longest string containing only characters in
        'characters' (a space by default) from the end of 'string'.

The example is pretty explicit about this, too:

        rtrim('testxxzx', 'xyz') → test

You could do what you want with regexp_replace() or the pattern-matching
variant of substring().

                        regards, tom lane