2015-07-23 2 views
2

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

My_Column 
XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX 

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

My_Column 
XOABOABOABOABOABOABOABUX 

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

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

+0

я хотел бы посмотреть на функциональность REGEXP_SUBSTR, это очень мощный, так что вы, вероятно, может сделать что-то с этим – davegreen100

+0

Как davegreen говорит, что вы можете использовать REGEXP_SUBSTR с регулярным выражением, как «(\\ ш) \\ 1+ " С уважением Giova – Giova

+0

Спасибо @ davegreen100. Позвольте мне проверить это. –

ответ

2

Вы можете использовать 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> 
+0

Спасибо @Lalit Kumar B! Это работает отлично. –

+0

@AttilaTheGeek Добро пожаловать! –

Смежные вопросы