Вы видели сопоставление с шаблоном 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’ —