MySQL: Регулярные выражения в MySQL

REGEXP (regular expression) в MySQL представляет собой мощный инструмент для работы с текстом, который позволяет осуществлять поиск и сопоставление подстрок с использованием шаблонов. Он использует регулярные выражения для определения шаблонов, которые будут использоваться при поиске и сопоставлении текста.

Метасимвол Описание
^ соответствует позиции в начале искомой строки
$ соответствует позиции в конце искомой строки
. соответствует любому одиночному символу
[…] соответствует любому символу, указанному внутри квадратных скобок
[^…] соответствует любому символу, не указанному внутри квадратных скобок
p1|p2 соответствует любому из шаблонов p1 или p2
* соответствует предшествующему символу ноль или более раз
+ соответствует предшествующему символу один или более раз
{n} соответствует n экземплярам предшествующего символа
{m,n} соответствует от m до n экземпляров предшествующего символа
# Поиск строк, содержащих только латинские буквы:
SELECT * FROM table WHERE column REGEXP '[a-zA-Z]';

# Поиск строк, содержащих только кириллические буквы:
SELECT * FROM table WHERE column REGEXP '[а-яА-Я]';

# Поиск строк, содержащих только цифры:
SELECT * FROM table WHERE column REGEXP '[0-9]';

# Поиск строк, содержащих только буквы и цифры:
SELECT * FROM table WHERE column REGEXP '[a-zA-Z0-9]';

# Поиск строк, начинающихся с буквы или цифры:
SELECT * FROM table WHERE column REGEXP '^[a-zA-Z0-9]';

# Поиск строк, содержащих определенное слово:
SELECT * FROM table WHERE column REGEXP 'word';

# Поиск строк, содержащих определенное слово из набора:
SELECT * FROM table WHERE column REGEXP 'word|altword';

# Поиск строк, содержащих определенный набор символов:
SELECT * FROM table WHERE column REGEXP '[abc]';

# Поиск строк, содержащих любые символы, кроме определенного набора:
SELECT * FROM table WHERE column REGEXP '[^abc]';

# Поиск строк, содержащих только пробелы:
SELECT * FROM table WHERE column REGEXP '^[[:space:]]*$';

# Поиск строк, содержащих email-адрес:
SELECT * FROM table WHERE column REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$';

# Поиск строк, содержащих номер телефона:
SELECT * FROM table WHERE column REGEXP '^+?[0-9]{1,3}\s??\d3?\d3?[-.\s]?\d{3}[-.\s]?\d{4}$';

# Поиск строк, начинающихся с определенной подстроки:
SELECT * FROM table WHERE column REGEXP '^substring';

# Поиск строк, заканчивающихся определенной подстрокой:
SELECT * FROM table WHERE column REGEXP 'substring$';

# Поиск строк, содержащих только заглавные буквы:
SELECT * FROM table WHERE column REGEXP '^[A-Z]+$';

# Поиск строк, содержащих только строчные буквы:
SELECT * FROM table WHERE column REGEXP '^[a-z]+$';

# Поиск строк, содержащих только определенное количество символов:
SELECT * FROM table WHERE column REGEXP '^.{5}$'; -- ищет строки, содержащие ровно 5 символов

# Поиск строк, содержащих только определенное количество и более символов:
SELECT * FROM table WHERE column REGEXP '^.{5,}$'; -- ищет строки, содержащие 5 символов или более

# Поиск строк, содержащих только определенное количество и не более символов:
SELECT * FROM table WHERE column REGEXP '^.{1,5}$'; -- ищет строки, содержащие от 1 до 5 символов

# Поиск строк, содержащих только определенный набор символов в определенной последовательности:
SELECT * FROM table WHERE column REGEXP '^abc.*def$'; -- ищет строки, начинающиеся с 'abc' и заканчивающиеся на 'def'

# Поиск строк, содержащих любые символы в определенном диапазоне Unicode:
SELECT * FROM table WHERE column REGEXP '[\u0400-\u04FF]'; -- ищет строки, содержащие кириллические символы

# Поиск строк, содержащих только определенный набор слов:
SELECT * FROM table WHERE column REGEXP '^(word1|word2|word3)$';

# Поиск строк, содержащих только определенный набор символов, повторяющихся несколько раз:
SELECT * FROM table WHERE column REGEXP '^(abc){3}$'; -- ищет строки, содержащие три повторения набора символов 'abc'

# Поиск строк, содержащих определенную последовательность символов в любом месте строки:
SELECT * FROM table WHERE column REGEXP '.substring.';

# Поиск строк, содержащих определенную последовательность символов в начале строки:
SELECT * FROM table WHERE column REGEXP '^substring.*';

# Поиск строк, содержащих определенную последовательность символов в конце строки:
SELECT * FROM table WHERE column REGEXP '.*substring$';
MySQL 1.6 г. Просмотров: 3.4k
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.