Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Заменить подряд идущие одинаковые символы на один такой же  [new]
zebzeb
Member

Откуда:
Сообщений: 95
Всем Привет!

Такой вопрос

Есть, например, строка

aasdddfd

Как ее конвертировать в такую

asdfd

Т.е надо убрать дубли

Может что-нибудь с регулярными выражениями...

Помогите, пожалуйста!
22 апр 10, 18:37    [8674076]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Violina
22 апр 10, 18:40    [8674086]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
zebzeb,

with t as (select 'aasdddfd' s from dual)
select regexp_replace(s,'(.)\1+','\1') from t;
22 апр 10, 18:41    [8674091]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
zebzeb
Member

Откуда:
Сообщений: 95
Спасибо!!!
22 апр 10, 18:45    [8674114]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Паганель
Violina
То же самое, но более эффективное

Однако, для задачи автора темы этот способ совершенно непригоден - три REPLACE на каждый символ - это явный перебор.
22 апр 10, 18:45    [8674118]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Интересно, зачем это нужно автору темы? :-)
SQL> with t as (select 'Длинношеее' s from dual)
  2  select s, regexp_replace(s,'(.)\1+','\1') AS nodubl from t;

S          NODUBL
---------- ---------------
Длинношеее Длиноше
22 апр 10, 18:50    [8674142]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
SQL*Plus
Паганель
Violina
То же самое, но более эффективное

Однако, для задачи автора темы этот способ совершенно непригоден - три REPLACE на каждый символ - это явный перебор.


тоже о нем вспомнил, но мне кажется там без какого то перебора не обойтись также.
22 апр 10, 18:50    [8674144]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
zebzeb
Member

Откуда:
Сообщений: 95
Мне это нужно для слияния словарей.
Словари заполнялись вручную на разных компах.
Поэтому чтобы Саратов совпал с Сараттов.

Хотя там еще других моентов хватает.
22 апр 10, 19:03    [8674209]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
zebzeb
Member

Откуда:
Сообщений: 95
Может еще кто-нибудь знает как сделать,
чтобы в отборе строка 'Саратов' совпала с 'Саратв' или с 'Сартов'?
22 апр 10, 19:10    [8674243]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
zebzeb,

STFF double metaphone, utl_match.
22 апр 10, 19:25    [8674304]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
zebzeb
Может еще кто-нибудь знает как сделать,
чтобы в отборе строка 'Саратов' совпала с 'Саратв' или с 'Сартов'?
Поищите аналог функции SOUNDEX для русского языка. В форуме много раз встречалось.

Другой - более "толстый" вариант - поедать все гласные.
22 апр 10, 19:35    [8674333]     Ответить | Цитировать Сообщить модератору
 Re: Заменить подряд идущие одинаковые символы на один такой же  [new]
zebzeb
Member

Откуда:
Сообщений: 95
Спасибо:) Теперь знаю, где копать.
22 апр 10, 19:35    [8674334]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить