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