SQL - удалить двойные точки с запятой в конце поля

Мы используем Amazon-Redshift (синтаксис, совместимый с PostgreSQL), у нас есть следующая строка в таблице

"TOTO;"
"TOTO;;"
"TOTO;;;"
"TOTO;;;;"

Я хотел бы 'rtrim' двойные точки с запятой. Так что я хотел бы иметь

"TOTO;"
"TOTO"
"TOTO;"
"TOTO"

Как это сделать?

2 ответа

Решение

Использовать regexp_replace функция с (;;)*$ регулярное выражение (любое количество ;; с последующим концом строки):

SELECT regexp_replace(';;test;;;', '(;;)*$'), regexp_replace(';;test;;;;', '(;;)*$');
┌────────────────┬────────────────┐
│ regexp_replace │ regexp_replace │
├────────────────┼────────────────┤
│ ;;test;        │ ;;test         │
└────────────────┴────────────────┘
(1 row)
select replace('TODO;;;',';;','')

Если я сделал неверное предположение, пожалуйста, прокомментируйте, и я перефокусирую свой ответ.

Другие вопросы по тегам