MySQL - регулярные выражения
Вы видели сопоставление шаблонов MySQL с LIKE ...%. MySQL поддерживает другой тип операции сопоставления с образцом на основе регулярных выражений иREGEXPоператор. Если вы знакомы с PHP или PERL, вам очень просто понять, потому что это сопоставление такое же, как и сценарии для регулярных выражений.
Ниже приводится таблица выкройки, которую можно использовать вместе с REGEXP оператор.
Шаблон | Что соответствует шаблону |
---|---|
^ | Начало строки |
$ | Конец строки |
. | Любой одиночный персонаж |
[...] | Любой символ, указанный в квадратных скобках |
[^ ...] | Любой символ, не указанный в квадратных скобках |
p1 | p2 | p3 | Чередование; соответствует любому из шаблонов p1, p2 или p3 |
* | Ноль или более экземпляров предыдущего элемента |
+ | Один или несколько экземпляров предыдущего элемента |
{n} | n экземпляров предыдущего элемента |
{m, n} | от m до n экземпляров предыдущего элемента |
Примеры
Теперь на основе приведенной выше таблицы вы можете создавать различные типы SQL-запросов в соответствии с вашими требованиями. Здесь я перечисляю некоторые из них для вашего понимания.
Предположим, у нас есть таблица с названием person_tbl и у него есть поле с именем name -
Запросить все имена, начинающиеся с 'st' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
Запросите все имена, оканчивающиеся на 'ok' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
Запрос на поиск всех имен, содержащих 'mar' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
Запрос, чтобы найти все имена, начинающиеся с гласной и заканчивающиеся на 'ok' -
mysql> SELECT FirstName FROM intque.person_tbl WHERE FirstName REGEXP '^[aeiou].*ok$';