SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.02.2013 13:11:42

keysi_
Участник
Зарегистрирован: 18.05.2010
Сообщений: 16

Регулярное выражение, работает везде кроме SQL

Всем привет.
Необходимо: найти определённый номер сотового телефона в базе данных MySQL, как бы он не был записан.
В поисках универсального решения у меня получился такой запрос:

SELECT * FROM `publs` WHERE `text` REGEXP "[7|8]?\s?[\-|\(]?903[\-|\)]?\s?0[\-|\s]?1[\-|\s]?2[\-|\s]?3[\-|\s]?4[\-|\s]?5[\-|\s]?6";


По идее должен находить все публикации в которых встречается сотовый телефон в любом виде,
например в таких:
8-903-012-34-56
8 903 0123456
9030-123-456
8 903 0123-45-6
8-903-0123456
7 903 012 34 56
8 903 012-34-56
8(903)012-34-56
8 (903) 012-34-56
9030123456
79030123456

Но находит только: 8-903-012-34-56

Удивительно то, что в php и python такое регулярное выражение прокатывает, в sql нет.
Где у меня ошибка?

Отредактированно keysi_ (19.02.2013 13:33:47)

Неактивен

 

#2 19.02.2013 17:39:11

keysi_
Участник
Зарегистрирован: 18.05.2010
Сообщений: 16

Re: Регулярное выражение, работает везде кроме SQL

Вобщем, опытным путём разобрался что дело в пробельном символе: \s
В качестве временного решения сделал так:

SELECT * FROM `publs` WHERE `text` REGEXP "[7|8]?[ ]?[\-|\(]?903[\-|\)]?[ ]?0[\-| ]?1[\-| ]?2[\-| ]?3[\-| ]?4[\-| ]?5[\-| ]?6";


Непонятно почему стандартный синтаксис регулярных выражений не работает в SQL, если есть комментарии по вопросу - пишите, буду ждать.
Тема не закрыта.

Отредактированно keysi_ (19.02.2013 17:39:56)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson