Удалить повторяющиеся одновременные символы в ORACLE 10g

У меня есть агрегированный столбец varchar2, содержащий выполненные сканы, в Oracle 10g. Примером является:

My_Column
XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX

Мне нужно удалить повторяющиеся одновременные символы, а именно. Мне нужно преобразовать вышеуказанную строку в:

My_Column
XOABOABOABOABOABOABOABUX

Мне нужно сохранить относительный порядок каждого символа. Как я могу это сделать?

Я думаю об использовании вложенных функций REPLACE() для очистки строки, но я ищу менее сложную альтернативу

1 ответ

Решение

Вы можете использовать REGEXP_REPLACE.

Например,

SQL> WITH DATA(str) AS(
  2  SELECT 'XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX' FROM dual
  3  )
  4  SELECT str, regexp_replace(str, '(.)\1+','\1') new_str FROM DATA;

STR                                       NEW_STR
----------------------------------------- ----------------------------
XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX XOABOABOABOABOABOABOABUX

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