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

Вы видели сопоставление шаблонов MySQLi с помощью LIKE ...%. MySQLi поддерживает другой тип операции сопоставления с образцом на основе регулярных выражений иREGEXPоператор. Если вы знакомы с PHP или PERL, то это очень просто понять, потому что это сопоставление очень похоже на те регулярные выражения сценариев.

Ниже приводится таблица выкройки, которую можно использовать вместе с REGEXP оператор.

Шаблон Что соответствует шаблону
^ Начало строки
$ Конец строки
. Любой одиночный персонаж
[...] Любой символ, указанный в квадратных скобках
[^ ...] Любой символ, не указанный в квадратных скобках
p1 | p2 | p3 Чередование; соответствует любому из шаблонов p1, p2 или p3
* Ноль или более экземпляров предыдущего элемента
+ Один или несколько экземпляров предыдущего элемента
{n} n экземпляров предыдущего элемента
{m, 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)

Запрос на поиск всех имен, содержащих 'a'

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'a';

Пример вывода должен быть таким -

+----+-------+
| id | name  |
+----+-------+
|  1 | sai   |
|  3 | ram   |
|  4 | johar |
+----+-------+
3 rows in set (0.00 sec)

Запрос на поиск всех имен, начинающихся с гласной

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^[aeiou]';