В этом руководстве вы узнаете, как использовать оператор SQL Server LIKE для проверки соответствия строки символов указанному шаблону.
- Введение в оператор LIKE SQL Server
- Шаблон
- Escape-символ
- Примеры оператора LIKE для SQL Server
- 1) Примеры использования оператора LIKE с подстановочным знаком %
- 2) Пример использования оператора LIKE с подстановочным знаком _(подчеркивание)
- 3) Пример использования оператора LIKE с подстановочным знаком [список символов]
- 4) Пример использования оператора LIKE с подстановочным знаком [символ-символ]
- 5) Пример использования оператора LIKE с подстановочным знаком [^Список или диапазон символов]
- 6) Пример использования оператора NOT LIKE
- 7) Пример использования оператора LIKE с ESCAPE
- Краткое содержание
Введение в оператор LIKE SQL Server
Оператор LIKE в SQL Server — это логический оператор, который проверяет, соответствует ли строка символов указанному шаблону.
Шаблон может включать обычные символы и подстановочные знаки. Оператор LIKE используется в предложении WHERE операторов SELECT, UPDATE и DELETE для фильтрации строк на основе сопоставления с шаблоном.
Вот синтаксис оператора LIKE:
column | expression LIKE pattern [ESCAPE escape_character]
Шаблон
Шаблон представляет собой последовательность символов для поиска в столбце или выражении. Он может включать следующие допустимые подстановочные знаки:
- Подстановочный знак процента(%): любая строка из нуля или более символов.
- Подстановочный знак подчеркивания(_): любой одиночный символ.
- Подстановочный знак [список символов]: любой отдельный символ из указанного набора.
- [Символ-символ]: любой одиночный символ в указанном диапазоне.
- [^]: любой символ, который не входит в список или диапазон.
Подстановочные знаки делают оператор LIKE более гибким, чем операторы сравнения строк «равно»(=) и «не равно»(!=).
Escape-символ
Символ экранирования указывает оператору LIKE обрабатывать символы подстановки как обычные символы. Символ экранирования не имеет значения по умолчанию и должен оцениваться только как один символ.
Оператор LIKE возвращает значение TRUE, если столбец или выражение соответствует указанному шаблону.
Чтобы отменить результат оператора LIKE, используйте оператор NOT следующим образом:
column | expression NOT LIKE pattern [ESCAPE escape_character]
Примеры оператора LIKE для SQL Server
Мы будем использовать следующую таблицу клиентов из образца базы данных :
1) Примеры использования оператора LIKE с подстановочным знаком %
В следующем примере оператор LIKE с подстановочным знаком % используется для поиска клиентов, фамилия которых начинается с буквы z:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE 'z%' ORDER BY first_name;
В следующем примере оператор LIKE с подстановочным знаком % используется для возврата клиентов, фамилия которых заканчивается на строку er:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '%er' ORDER BY first_name;
В следующем операторе оператор LIKE используется для извлечения клиентов, фамилия которых начинается с буквы t и заканчивается на букву s:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE 't%s' ORDER BY first_name;
2) Пример использования оператора LIKE с подстановочным знаком _(подчеркивание)
Подчеркивание представляет собой один символ. Например, следующий оператор возвращает клиентов, где второй символ — буква u:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '_u%' ORDER BY first_name;
Шаблон _u%
- Первый символ подчеркивания(_) соответствует любому отдельному символу.
- Вторая буква u точно соответствует букве u.
- Третий символ % соответствует любой последовательности символов.
3) Пример использования оператора LIKE с подстановочным знаком [список символов]
Квадратные скобки со списком символов, например, [ABC] представляют один символ, который должен быть одним из символов, указанных в списке.
Например, следующий запрос возвращает клиентов, у которых первая буква фамилии — Y или Z:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '[YZ]%' ORDER BY last_name;
4) Пример использования оператора LIKE с подстановочным знаком [символ-символ]
Квадратные скобки с диапазоном символов, например, [AC], представляют собой один символ, который должен находиться в указанном диапазоне.
Например, следующий запрос находит клиентов, у которых первый символ фамилии является буквой из диапазона от A до C:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '[A-C]%' ORDER BY first_name;
5) Пример использования оператора LIKE с подстановочным знаком [^Список или диапазон символов]
Квадратные скобки со знаком вставки(^), за которыми следует диапазон, например, [^AC], или список символов, например, [ABC], представляют собой один символ, который не входит в указанный диапазон или список символов.
Например, следующий запрос возвращает клиентов, у которых первый символ фамилии не входит в диапазон от A до X:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE last_name LIKE '[^A-X]%' ORDER BY last_name;
6) Пример использования оператора NOT LIKE
В следующем примере оператор NOT LIKE используется для поиска клиентов, у которых первый символ в имени не является буквой A:
SELECT customer_id, first_name, last_name FROM sales.customers WHERE first_name NOT LIKE 'A%' ORDER BY first_name;
7) Пример использования оператора LIKE с ESCAPE
Сначала создадим новую таблицу для демонстрации:
CREATE TABLE sales.feedbacks( feedback_id INT IDENTITY(1, 1) PRIMARY KEY, comment VARCHAR(255) NOT NULL );
Во-вторых, вставьте несколько строк в таблицу sales.feedbacks:
INSERT INTO sales.feedbacks(comment) VALUES('Can you give me 30% discount?'), ('May I get me 30USD off?'), ('Is this having 20% discount today?');
В-третьих, запросите данные из таблицы sales.feedbacks:
SELECT * FROM sales.feedbacks;
Если вы хотите найти 30% в колонке комментариев, вы можете придумать такой запрос:
SELECT feedback_id, comment FROM sales.feedbacks WHERE comment LIKE '%30%';
Запрос возвращает комментарии, содержащие 30% и 30 долларов США, что не соответствует нашим ожиданиям.
Чтобы решить эту проблему, можно использовать предложение ESCAPE:
SELECT feedback_id, comment FROM sales.feedbacks WHERE comment LIKE '%30!%%' ESCAPE '!';
В этом запросе предложение ESCAPE указывает, что символ ! является экранирующим символом.
Он указывает оператору LIKE обрабатывать символ % как буквальную строку, а не как подстановочный знак. Обратите внимание, что без предложения ESCAPE запрос вернул бы пустой набор результатов.
Краткое содержание
- Используйте оператор LIKE, чтобы проверить, соответствует ли значение указанному шаблону.
- Используйте оператор NOT для отрицания оператора LIKE.