Вы видели сопоставление с шаблоном MySQLi с LIKE …% . MySQLi поддерживает другой тип операции сопоставления с образцом на основе регулярных выражений и оператора REGEXP . Если вы знакомы с PHP или PERL, то вам будет очень легко понять, потому что это сопоставление очень похоже на те сценарии регулярных выражений.
Ниже приведена таблица паттернов, которую можно использовать вместе с оператором REGEXP .
Шаблон | Какой шаблон соответствует |
---|---|
^ | Начало строки |
$ | Конец строки |
, | Любой отдельный персонаж |
[…] | Любой символ, указанный в квадратных скобках |
[^ …] | Любой символ, не указанный в квадратных скобках |
p1 | p2 | p3 | Чередование; соответствует любому из паттернов p1, p2 или p3 |
* | Ноль или более экземпляров предыдущего элемента |
+ | Один или несколько экземпляров предыдущего элемента |
{П} | n экземпляров предыдущего элемента |
{Т, п} | от m до n экземпляров предыдущего элемента |
Примеры
Теперь, основываясь на приведенной выше таблице, вы можете использовать различные типы SQL-запросов для удовлетворения ваших требований. Здесь я перечислил несколько для вашего понимания. Предположим, у нас есть таблица с именем tutorials_inf, и у нее есть поле с именем name —
Запрос, чтобы найти все имена, начинающиеся с ‘sa’
mysql> SELECT * FROM tutorials_inf WHERE name REGEXP '^sa';
Пример вывода должен быть таким:
+----+------+ | id | name | +----+------+ | 1 | sai | +----+------+ 1 row in set (0.00 sec)
Запросить поиск всех имен, заканчивающихся на ‘ai’
mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'ai$';
Пример вывода должен быть таким:
+----+------+ | id | name | +----+------+ | 1 | sai | +----+------+ 1 row in set (0.00 sec)
Запрос, чтобы найти все имена, которые содержат «а»
mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'a';
Пример вывода должен быть таким:
+----+-------+ | id | name | +----+-------+ | 1 | sai | | 3 | ram | | 4 | johar | +----+-------+ 3 rows in set (0.00 sec)
Запрос, чтобы найти все имена, начинающиеся с гласной