15 дек. 2012 г.

Ругулярные выражения в MySQL. REGEXP in MySQL

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

Примеры использования REGEXP:
SELECT * FROM `table` WHERE `name` REGEXP 'Ser.+'
Пример с использованием LIKE:

SELECT * FROM `table` WHERE `name` LIKE 'Ser%'
В обоих случаях будут выбраны записи, у которых в поле `name` находяться значения которые начинаются на "Ser"

Теперь приведу более сложный пример:

SELECT * FROM `table` WHERE `name` REGEXP  '^(A|B|C)'
Выбираем все имена, которые начинаються на A,B или C


Таким образом, в условии WHERE, можно прописывать регулярные выражения любой сложности. Необходимо помнить, что для регулярных выражений внутри MySQL справедливо правило: "Если найдено соответствие записи в таблице регулярному выражению, то такая запись попадет в результирующую выборку"

Правила построения запросов являются стандартными, а это значит что тренироваться можно на сайте Rubular. Где также, всегда можно посмотреть и на сами правила построения.