Вы видели сопоставление с шаблоном MySQL с LIKE …% . MySQL поддерживает другой тип операции сопоставления с образцом на основе регулярных выражений и оператора REGEXP . Если вы знакомы с PHP или PERL, то вам очень просто понять, потому что это сопоставление аналогично сценариям регулярных выражений.
Ниже приведена таблица шаблонов, которую можно использовать вместе с оператором REGEXP .
Шаблон | Какой шаблон соответствует |
---|---|
^ | Начало строки |
$ | Конец строки |
, | Любой отдельный персонаж |
[…] | Любой символ, указанный в квадратных скобках |
[^ …] | Любой символ, не указанный в квадратных скобках |
p1 | p2 | p3 | Чередование; соответствует любому из паттернов p1, p2 или p3 |
* | Ноль или более экземпляров предыдущего элемента |
+ | Один или несколько экземпляров предыдущего элемента |
{П} | 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$';
Запрос, чтобы найти все имена, которые содержат «Мар» —
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
Запрос, чтобы найти все имена, начиная с гласной и заканчивая ‘ok’ —