Вы видели сопоставление шаблонов 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';
;
Запрос, чтобы найти все имена, содержащие «mar» —

