Удалить повторяющиеся одновременные символы в 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>