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

Откуда: Бузулук
Сообщений: 359
Входные данные:

Есть поле m_messagen. data_type=varchar2 4000 byte. В этом поле содержится различный текст, вида "бла-бла-бла 8-922-922-92-22 и прочая бла-бла-бла"


как селектом отобрать только те строки где содержатся номера телефонов, при этом отсечь все, что не является телефоном.

т.е. на выходе должно быть так

m_messagen
8-922-922-22-22
8-922-922-33-22

и т.д.
29 окт 14, 11:36    [16771751]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
Добрый Э - Эх
Guest
RenVold,
телефон всегда забит в такой маске:
Х-ХХХ-ХХХ-ХХ-ХХ

или как могут быть варианты?
29 окт 14, 11:49    [16771842]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
RenVold
Member

Откуда: Бузулук
Сообщений: 359
Добрый Э - Эх,

Да. всегда в маске. я конечно могу найти все телефоны с помощью like '%8-922-%', а вот как отсечь от мусора- не знаю (((
29 окт 14, 11:52    [16771858]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
AmKad
Member

Откуда:
Сообщений: 5222
RenVold
как отсечь от мусора- не знаю (((
regexp_substr
29 окт 14, 11:56    [16771880]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
RenVold
Member

Откуда: Бузулук
Сообщений: 359
AmKad,

Ух ты! Ничего про эту функцию не знал! Почитал про нее. Интересная функция. Но она мне с трудом в понимании дается.

сделал так:

select m_messagen,      
      regexp_substr(m_messagen,'[^8-922-]+',1) test      
from (select m_messagen  from messagesn );


возвращает такую фигню...

m_messages Test
Bla-bla-bla aaa sssddsds 8-922-838-52-52 8-932-551-81-55. bla-bla bla-bla Bla
29 окт 14, 12:31    [16772108]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
AmKad
Member

Откуда:
Сообщений: 5222
RenVold,

'8-922-\d{3}-\d{2}-\d{2}'
29 окт 14, 12:48    [16772195]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
RenVold
Member

Откуда: Бузулук
Сообщений: 359
AmKad
RenVold,

'8-922-\d{3}-\d{2}-\d{2}'


Отлично! То что нужно! Только я не понимаю этих лексем (или как они еще называются). я про \d{3}-\d{2}-\d{2} Что они означают? Где почитать?
29 окт 14, 12:59    [16772286]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
AmKad
Member

Откуда:
Сообщений: 5222
RenVold,

Using Regular Expressions in Database Applications
29 окт 14, 13:11    [16772376]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
expel
Member

Откуда:
Сообщений: 155
RenVold,

Гребаный стыд `(;..;)`

'8-922-\d{3}-\d{2}-\d{2}'
- это регулярное выражение.

Клавиатура- Гугель- "Регулярные выражения Oracle".
29 окт 14, 13:12    [16772379]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
RenVold
Member

Откуда: Бузулук
Сообщений: 359
Есть вот такой скрипт

select  fio,    
      regexp_substr(m_message_p,'8-922-\d{3}-\d{2}-\d{2}') mobile      
from (select fio, m_message_p  from message_tb)


который ищет и возвращает все номера тел, которые удовлетворяют шаблону.
Но при этом возвращает пустые значения. Как от них избавиться?

fio mobile
Капитал 8-922-***-**-**
Мартынов "8-922-***-**-12
Мартынов "8-922-***-**-13
Мартынов "8-922-***-**-13
Флейшер
Рябушева
Стрельцов В Ф8-922-***-**-**
Марченко Г. М.8-922-***-**-**


При этом сгруппировать Мартынова по номерам телефона. Т.е Мартынов ,"8-922-***-**-13 - 1 раз и Мартынов ,"8-922-***-**-12 тоже один раз
5 ноя 14, 19:42    [16802784]     Ответить | Цитировать Сообщить модератору
 Re: Выборка телефонов из сплошного текста  [new]
Ser123
Guest
RenVold,

where mobile is not null
group by group by fio, mobile
5 ноя 14, 19:48    [16802791]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить