Обсуждение: BUG #16507: RTRIM function doesnt behave as expected for certain scenario
BUG #16507: RTRIM function doesnt behave as expected for certain scenario
От
PG Bug reporting form
Дата:
The following bug has been logged on the website: Bug reference: 16507 Logged by: Chetan Burande Email address: chetan.burande7@gmail.com 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
PG Bug reporting form <noreply@postgresql.org> 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