Регулярное выражение — это последовательность символов, используемая для сопоставления шаблона со строкой. Вы можете использовать его для поиска текста и проверки ввода.
Помните, что регулярное выражение не является свойством определенного языка.
Регулярное выражение должно быть заключено в одинарные кавычки. Это гарантирует, что все выражение интерпретируется функцией SQL.
Метасимволы, поддерживаемые в регулярных выражениях
Символ | Описание |
---|---|
. | Соответствует любой символ. |
+ | Соответствует одному или несколько вхождений предыдущего подвыражения. |
? | Соответствует нулю или одному вхождению предыдущего подвыражения. |
∗ * ∗ | Соответствует нулю или более вхождений предыдущего подвыражения. |
{m} | Точно соответствует m m m вхождений предыдущего подвыражения. |
Соответствует как минимум mm m вхождения предыдущего подвыражения. | |
{m, n} | Соответствует не менее m m семантика> m, но не более , чем n n n, вхождения предыдущего подвыражения. |
[ …] | Соответствует любому символу в списке. |
[^…] | Соответствует любому символу не в списке. |
Обрабатывает следующий метасимвол в выражении ression как литерал. | |
^ | Сопоставлять последующее выражение только тогда, когда оно встречается в начале строки. |
$ | Соответствует предыдущему выражению, только если оно встречается в конце строки. |
Создание регулярных выражений в SQL
MySQL позволяет сопоставлять шаблоны с помощью оператора REGEXP
.
См. синтаксис ниже :
SELECT column_listFROM table_nameWHERE string_column REGEXP pattern;
Примеры
Рассмотрим следующий сотрудники
таблица:
СОЗДАТЬ ТАБЛИЦУ сотрудников (emp_id int, emp_name varchar (20), dept varchar (20), age int); INSER T INTO сотрудники (emp_id, emp_name, dept, age) VALUES (1, "John", "Intern", 25); INSERT INTO сотрудники (emp_id, emp_name, dept, age) VALUES (5, "jake", "Intern" , 25); ВСТАВИТЬ сотрудников (emp_id, emp_name, dept, age) ЗНАЧЕНИЯ (2, «Дэвид», «Стажер», 30); ВСТАВИТЬ сотрудников (emp_id, emp_name, dept, age) ЗНАЧЕНИЯ (3, «Майк» , "Инженер", 29); ВСТАВИТЬ сотрудников (emp_id, emp_name, dept, age) VALUES (4, "Alex", "HR", 27);
id | имя | dept | возраст |
---|---|---|---|
1 | Джон | Стажер | 25 |
2 | Дэвид | Стажер | 30 |
3 | Майк | Инженер | 29 |
4 | Alex | HR | 27 |
5 | Джейк | Стажер | 25 |
Взгляните на приведенные ниже примеры; они показывают, как создавать регулярные выражения (и использовать их) с помощью оператора REGEXP
.
Если вам нужен
REGEXP
для сравнения строк с учетом регистра, вы можете использовать операторBINARY
для преобразования строки в двоичную строку
- чтобы найти сотрудников, имена которых начинаются с символ j, используйте - метасимвол '^' для соответствия в начале имени. ВЫБЕРИТЕ emp_nameFROM employeeWHERE emp_name REGEXP '^ j'; - соответствует только прописной букве "J" в начале названия продукта.SELECT emp_nameFROM employeeWHERE emp_name REGEXP BINARY '^ J'; - Чтобы найти продукт, имя которого заканчивается на f, используйте 'f $' to - соответствует концу строки.SELECT emp_nameFROM employeeWHERE emp_name REGEXP 'e $'; - Чтобы найти продукт, имя которого содержит букву «k», - используйте следующий запрос: SELECT emp_nameFROM employeeWHERE emp_name REGEXP 'k'; - Чтобы найти продукт, имя которого содержит ровно 10 символов, - используйте '^' и '$, чтобы сопоставить начало и конец имени продукта, - и повторите {10} раз любой символ' . ' между ними, как показано - в следующем запросе: SELECT emp_nameFROM employeeWHERE emp_name REGEXP '^. {10} $';