SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 18.02.2014 14:33:49

itr
Участник
Зарегистрирован: 18.02.2014
Сообщений: 1

REGEXP с отрицанием

Здравствуйте!

Подскажите, пожалуйста, как должно быть записано условие поиска по регулярному выражению, чтобы выполнялись следующие условия:
1.) найти все записи, где в строке встречается сочетание символов 'un', НО не 'unlim';
2.) запрос менять нельзя (т. е. оставить  REGEXP и добавить еще NOT REGEXP), можно поменять только регулярное выражение:


SELECT *  FROM `TABLE 1` WHERE `COL 1` REGEXP '<регулярное выражение>'
 

На некоторых сайтах пишут, что в REGEXP отсутствует отрицание, поэтому REGEXP с отрицанием приходится разбивать на два регулярных выражения (REGEXP и NOT REGEXP).

На самом деле, REGEXP с отрицание можно записать так:

SELECT * FROM `TABLE 1` WHERE `COL 1` REGEXP 'un[^l]'
 

Но это не отрицание подстроки, а отрицание любого из символа, в квадратных скобках, следующего за символом 'n'.

А как же записать регулярное выражение с отрицанием подстроки?

Отредактированно itr (18.02.2014 14:42:56)

Неактивен

 

#2 18.02.2014 20:39:48

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: REGEXP с отрицанием

В MySQL реализована ограниченная поддержка регулярных выражений, попробуйте в MariaDB 10 (возможно в ней получиться)

Неактивен

 

#3 19.02.2014 03:19:24

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: REGEXP с отрицанием

В оригинальной MySQL отрицательных подмасок нет, и так, как вы написали, сделать, к сожалению, не получится.

А вот с MariaDB получится точно - обратите внимание на ссылку, которую привел vasya.

Неактивен

 

Board footer

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