Учебники

MySQLi — регулярные выражения

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

Запрос, чтобы найти все имена, начинающиеся с гласной