Сложные примеры использования операторов LIKE и RLIKE для поиска по шаблону

Операторы LIKE и RLIKE (или REGEXP) в SQL позволяют выполнять поиск по шаблонам. Оператор LIKE поддерживает простые шаблоны поиска с использованием символов подстановки % и _, а RLIKE предоставляет возможности для более сложного поиска с использованием регулярных выражений.

Примеры использования оператора LIKE

1. Поиск строк с переменным количеством символов

Пример: Найти все адреса электронной почты, содержащие как минимум одну цифру в середине

SELECT email
FROM contacts
WHERE email LIKE '%[0-9]%';

Этот запрос ищет адреса электронной почты, содержащие хотя бы одну цифру в любом месте адреса. Заметьте, что LIKE не поддерживает символы подстановки в стиле регулярных выражений, поэтому это возможно только с помощью RLIKE или REGEXP.

2. Поиск строк, начинающихся с определенной буквы и заканчивающихся на определенное слово

Пример: Найти все имена, начинающиеся на букву "J" и заканчивающиеся на "son"

SELECT name
FROM users
WHERE name LIKE 'J%son';

Этот запрос найдет имена пользователей, начинающиеся на "J" и заканчивающиеся на "son", например, "Johnson" и "Jackson".

3. Поиск строк с конкретной длиной

Пример: Найти все строки, содержащие ровно 5 символов

SELECT code
FROM products
WHERE code LIKE '_____';

Этот запрос найдет все строки в столбце code, которые содержат ровно 5 символов (каждый символ заменяется символом подстановки _).

Примеры использования оператора RLIKE (или REGEXP)

1. Поиск строк с несколькими вариантами шаблона

Пример: Найти все номера телефонов, которые начинаются с 123 или 456

SELECT phone_number
FROM contacts
WHERE phone_number RLIKE '^(123|456)';

Этот запрос использует регулярные выражения для поиска номеров телефонов, которые начинаются с "123" или "456".

2. Поиск строк, содержащих несколько возможных шаблонов

Пример: Найти все адреса электронной почты, содержащие "example" или "test"

SELECT email
FROM contacts
WHERE email RLIKE 'example|test';

Этот запрос ищет все адреса электронной почты, содержащие либо "example", либо "test".

3. Поиск строк с числовыми диапазонами

Пример: Найти все строки, содержащие числа от 100 до 199

SELECT description
FROM products
WHERE description RLIKE '\b1[0-9][0-9]\b';

Этот запрос найдет строки, содержащие числа от 100 до 199, где \b обозначает границу слова (чтобы избежать совпадений с числами, как часть других чисел).

4. Поиск строк, не содержащих определенные символы

Пример: Найти все строки, не содержащие цифры

SELECT description
FROM products
WHERE description RLIKE '^[^0-9]*$';

Этот запрос найдет строки, которые не содержат никаких цифр.

5. Поиск строк с определенным количеством повторений символов

Пример: Найти все строки, содержащие от 2 до 4 повторений символа "a" подряд

SELECT text
FROM documents
WHERE text RLIKE 'a{2,4}';

Этот запрос найдет строки, содержащие от 2 до 4 подряд идущих символов "a".

Заключение

Операторы LIKE и RLIKE (или REGEXP) предоставляют мощные средства для выполнения поиска по шаблонам в SQL. Оператор LIKE подходит для более простых шаблонов с использованием символов подстановки, в то время как RLIKE позволяет создавать сложные условия поиска с использованием регулярных выражений. Оба оператора могут быть использованы для выполнения гибкого и точного поиска данных в текстовых полях.

Last updated