Использование оператора LIKE для поиска по шаблону

Оператор LIKE в SQL используется для поиска строк в таблице, которые соответствуют заданному шаблону. Этот оператор позволяет находить строки, соответствующие шаблону с использованием специальных символов подстановки. Вот основные моменты использования LIKE:

Символы подстановки

  1. % — Заменяет любое количество символов, включая ноль.

    • Пример: LIKE 'abc%' найдет все строки, начинающиеся с "abc", независимо от того, что идет дальше (например, "abc", "abcd", "abc123").

  2. _ — Заменяет один любой символ.

    • Пример: LIKE 'a_c' найдет строки, такие как "abc", "a1c", "a-c", но не "ac" или "abdc".

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

1. Поиск строк, начинающихся с определенного символа или последовательности символов

SELECT * FROM employees WHERE first_name LIKE 'J%';

Этот запрос вернет всех сотрудников, чье имя начинается с буквы "J". Например, "John", "James", "Jack".

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

SELECT * FROM employees WHERE last_name LIKE '%son';

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

3. Поиск строк, содержащих определенную последовательность символов

SELECT * FROM employees WHERE email LIKE '%@example.com';

Этот запрос найдет всех сотрудников, чьи email-адреса заканчиваются на "@example.com".

4. Поиск строк по определенной позиции символа

SELECT * FROM products WHERE product_code LIKE 'A_B%';

Этот запрос найдет все продукты, код которых начинается с "A", затем следует один любой символ, потом "B", и далее любые символы. Например, "A1B", "A2B123", "A-BX".

5. Поиск строк по количеству символов

SELECT * FROM employees WHERE phone_number LIKE '____1234';

Этот запрос вернет всех сотрудников, чьи телефонные номера состоят из 8 цифр и заканчиваются на "1234". Например, "56781234".

Использование LIKE с NOT

Вы можете использовать LIKE вместе с оператором NOT, чтобы найти строки, которые не соответствуют шаблону.

SELECT * FROM employees WHERE last_name NOT LIKE '%son';

Этот запрос вернет всех сотрудников, чьи фамилии не заканчиваются на "son".

Регистрозависимость

Регистрозависимость оператора LIKE зависит от используемой базы данных и её настроек:

  • В некоторых системах, таких как MySQL, LIKE по умолчанию не чувствителен к регистру.

  • В других, например, в PostgreSQL, он чувствителен к регистру, если не использовать специальные параметры или функции для игнорирования регистра.

Заключение

Оператор LIKE — это мощный инструмент для поиска строк по шаблону в SQL-запросах. Использование символов подстановки % и _ позволяет создавать гибкие условия поиска, что особенно полезно при работе с текстовыми данными.

Last updated