LIKE SQL Server — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
В этом учебном пособии вы узнаете, как использовать в SQL Server условие LIKE (Transact-SQL) для выполнения сопоставления с шаблоном с синтаксисом и примерами.
Описание
Условие LIKE SQL Server (Transact-SQL) определяет, совпадает ли указанная символьная строка с заданным шаблоном в предложении WHERE в операторе SELECT, INSERT, UPDATE или DELETE. Это позволяет выполнять сопоставление образцов.
Синтаксис
Синтаксис условия LIKE в SQL Server (Transact-SQL):
expression LIKE pattern [ ESCAPE ‘escape_character’ ]
Параметры или аргументы
expression — символьное выражение, такое как столбец или поле.
pattern — символьное выражение, содержащее подстановочный символ. Подстановочные символы, которые вы можете выбрать:
символ | пояснение |
---|---|
% | Позволяет вам сопоставлять любую строку любой длины (включая нулевую длину) |
_ | Позволяет вам сопоставлять один символ |
[ ] | Позволяет вам сопоставлять любой символ в скобках [] (например, [abc] будет соответствовать символам a, b или c) |
[^] | Позволяет вам сопоставлять любой символ, не находящийся в скобках [^] (например, [^ abc] будет соответствовать любому символу, который не является символом a, b или c) |
escape_character — необязательный. Это позволяет вам проверять для буквенных экземпляров символа подстановки, например % или _.
Пример использования подстановочного символа % (символ процента)
Первый пример SQL Server LIKE, который мы рассмотрим, включает использование шаблона %.
Давайте объясним, как шаблон % работает в SQL Server условии LIKE. Мы хотим найти всех employees (сотрудников), чье имя last_name начинается с ‘Б’.
Например:
Transact-SQL
SELECT * FROM employees WHERE last_name LIKE ‘Б%’;
SELECT * FROM employees WHERE last_name LIKE ‘Б%’; |
Этот пример условия SQL Server LIKE вернет всех employees у которых last_name будет начинаться на ‘Б’ такие как ‘Брошкин’, ‘Баранников’, ‘Богомолец’ и т.д.
Вы также можете использовать групповой символ % несколько раз в одной строке. Например:
Transact-SQL
SELECT * FROM employees WHERE last_name LIKE ‘%o%’;
SELECT * FROM employees WHERE last_name LIKE ‘%o%’; |
В этом примере SQL LIKE мы ищем всех employees (сотрудников), у которых last_name содержит букву ‘o’.
Пример использования подстановочного символа _ (символ подчеркивания)
Затем давайте объясним, как подстановочный символ _ (символ подчеркивания) работает в условии SQL Server LIKE. Помните, что _ ищет только один символ.
Например:
Transact-SQL
SELECT * FROM employees WHERE last_name LIKE ‘Кр_т’;
SELECT * FROM employees WHERE last_name LIKE ‘Кр_т’; |
Этот пример условия SQL LIKE возвращает всех employees (сотрудников), чье имя last_name равно 4 символам, причем первые два символа — «Кр», а последний символ — «т». Например, он может вернуть сотрудников, чье last_name является «Крот», «Крат», «Крут», «Крит» и т.д.
Вот еще один пример:
Transact-SQL
SELECT * FROM employees WHERE employee_number LIKE ‘123_’;
SELECT * FROM employees WHERE employee_number LIKE ‘123_’; |
Вам может понадобиться найти номер employee_number, но у вас есть только 3 из 4 цифр. В приведенном выше примере будет извлечено потенциально 10 записей (где отсутствующее значение могло бы равняться чему угодно от 0 до 9). Например, он может вернуть employees, чьи employee_number:
1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239
Пример использования подстановочного символа [] (квадратные скобки).
Далее, давайте объясним, как подстановочный символ [] (квадратные скобки) работает в условии SQL Server LIKE. Помните, что то, что содержится в квадратных скобках, это символы, которые вы пытаетесь сопоставить.
Например:
Transact-SQL
SELECT * FROM employees WHERE first_name LIKE ‘К[ио]тов’;
SELECT * FROM employees WHERE first_name LIKE ‘К[ио]тов’; |
Этот пример условия LIKE SQL Server возвращает всех employees, чье имя first_name равно 5 символам, причем первый символ — «К», а три последних символа — «тов», а второй символ — «и» или «о». ио]тов’;
Этот пример условия SQL Server LIKE возвращает всех сотрудников, чье имя first_name равно 5 символам, причем первый символ — «К», а три последних символа — «тов», а второй символ не является «и» или «о». Таким образом, в этом случае он будет соответствовать таким значениям, как «Катов», «Кутов», «Кетов» и т.д. Но это не будет соответствовать ни «Китов», ни «Котов».
Пример использования оператора NOT
Затем давайте посмотрим, как использовать SQL Server NOT Operator с помощью подстановочных символов.
Будем использовать % с оператором NOT. Вы также можете использовать условие SQL LIKE для поиска employees (сотрудников), имя которых не начинается с буквы «Б».
Например:
Transact-SQL
SELECT * FROM employees WHERE last_name NOT LIKE ‘Б%’;
SELECT * FROM employees WHERE last_name NOT LIKE ‘Б%’; |
Поместив оператор NOT перед условием LIKE SQL Server, вы сможете получить всех employees, имя которых не начинается с «Б».
Пример использования символов Escape
Важно понимать, как сопоставить «Escape Characters» с pattern. Эти примеры относятся конкретно к экранирующим символам в SQL Server.
Предположим, вы хотели найти символ % или _ в условии SQL Server LIKE. Вы можете сделать это, используя символ Escape.
Обратите внимание, что вы можете определить escape-символ только как один символ (length = 1).
Например:
Transact-SQL
SELECT * FROM employees WHERE secret_hint LIKE ‘123!%455’ ESCAPE ‘!’;
SELECT * FROM employees WHERE secret_hint LIKE ‘123!%455’ ESCAPE ‘!’; |
Этот пример условия SQL LIKE идентифицирует символ ! как escape-символ. Это предложение вернет всех employees, чей secret_hint составляет 123%455.
Вот еще один более сложный пример использования escape-символов в SQL Server условии LIKE.
Transact-SQL
SELECT * FROM employees WHERE secret_hint LIKE ‘H%!%’ ESCAPE ‘!’;
SELECT * FROM employees WHERE secret_hint LIKE ‘H%!%’ ESCAPE ‘!’; |
Этот пример условия SQL LIKE возвращает всех employees, чей secret_hint начинается с ‘H’ и заканчивается на ‘%’. Например, он возвращает значение, например «Help%».
Вы также можете использовать escape-символ с символом _ в условии SQL Server LIKE.
Например:
Transact-SQL
SELECT * FROM employees WHERE secret_hint LIKE ‘H%!_’ ESCAPE ‘!’;
SELECT * FROM employees WHERE secret_hint LIKE ‘H%!_’ ESCAPE ‘!’; |
Этот пример условия SQL LIKE возвращает всех employees, чей secret_hint начинается с ‘H’ и заканчивается на ‘_’. Например, он вернет значение, например «Help_».
Как использовать регулярные выражения в SQL Server с оператором LIKE
Регулярные выражения — это фундаментальный навык для всех, кто хочет искать и манипулировать строками. Вы можете указать точные и сложные выражения, используя регулярное выражение для поиска и замены различных строк и шаблонов. В таких инструментах, как SSMS, шаблоны регулярных выражений можно указать в параметрах «Найти что» и «Найти и заменить».
Однако в этом руководстве мы рассмотрим, как выполнять запросы регулярных выражений в T-SQL с использованием операторов LIKE и NOT LIKE.
ПРИМЕЧАНИЕ. Регулярные выражения — это всеобъемлющая тема, и ее невозможно описать в одном руководстве. Вместо этого мы сосредоточимся на большинстве команд и полезных регулярных выражений, которые вы можете использовать в своих повседневных операциях с базой данных.
В T-SQL мы можем определять регулярные выражения с помощью оператора LIKE. Оператор возьмет соответствующее выражение и найдет все совпадающие шаблоны.
В SQL Server существуют различные типы регулярных выражений:
- Алфавитное регулярное выражение
- Числовое регулярное выражение
- Регулярное выражение специального символа
- RegEx с учетом регистра
- Регулярное выражение исключения
Давайте разберемся, как определить регулярное выражение в SQL Server.
Примеры регулярных выражений SQL Server
Давайте разберемся, как использовать регулярные выражения в SQL Server, используя практические примеры. В этой статье мы будем использовать образец базы данных salesdb.
Образец базы данных можно загрузить со следующего ресурса:
Пример 1
В следующем примере запроса используется регулярное выражение для поиска названия продуктов, начинающихся с буквы L:
USE salesdb;
ВЫБЕРИТЕ Имя ИЗ ПРОДУКТОВ ГДЕ Имя НРАВИТСЯ ‘[L]%’; Пример 2 мы можем сделать следующее:
ВЫБЕРИТЕ Имя ИЗ Продукты ГДЕ Имя НРАВИТСЯ ‘[L][O]%’;
Запрос должен возвращать названия продуктов, начинающиеся с LO. Результирующий набор выглядит следующим образом:
Пример 3
Чтобы отфильтровать более двух букв, укажите каждую букву в квадратных скобках, как показано: ][К]%’;
Результирующий набор выглядит следующим образом:
Пример 4
Предположим, вы хотите отфильтровать продукты, соответствующие определенному диапазону строк. Например, товары, начинающиеся с символов между L – P:
ВЫБЕРИТЕ Имя ИЗ Продукты ГДЕ Имя НРАВИТСЯ ‘[L-P]%’;
Результирующий набор выглядит следующим образом:
Пример 5
Вы также можете отфильтровать несколько условий совпадения в одном запросе, как показано:
SELECT Name FROM Products WHERE Name LIKE ‘[LP][a-o]%’ ;
Пример набора результатов:
Пример 6
Предположим, вы хотите получить продукты, оканчивающиеся на определенный символ? В этом случае вы можете изменить положение процента, как показано на рисунке:
ВЫБЕРИТЕ Имя ИЗ Продукты ГДЕ Имя НРАВИТСЯ ‘%[pe]’; Пример 7 ]’;
Приведенный выше запрос должен вернуть набор результатов в виде:
Пример 8
Что делать, если вы хотите исключить определенные символы из запроса фильтра? Вы можете использовать 9являюсь]%’;
В результатах должны быть исключены буквы от a до m.
Пример 9
Предположим, вы хотите найти товары, название которых содержит номер? Мы можем выполнить запрос, как показано ниже:
SELECT * FROM Products WHERE Name LIKE ‘%[0-9]’;
Результат должен быть следующим:
Примечание. Вы можете использовать оператор NOT LIKE, чтобы отрицать результат регулярного выражения.
Заключение
Оператор SQL Server LIKE с примерами — Учебное пособие по SQL Server
Цель обучения
Цель этого учебного пособия по SQL Server — научить вас использовать логический оператор LIKE
для сопоставления с шаблоном.
Что такое оператор
LIKE
в SQL Server? Оператор SQL Server LIKE
выполняет гибкое сопоставление шаблонов с помощью подстановочных знаков, что устраняет необходимость указывать точный шаблон или весь шаблон. Его можно использовать в SELECT
, UPDATE
или DELETE
запрос и является альтернативой IN, = и !=.
Операция
Оператор SQL Server LIKE
следует за предложением WHERE
в запросе SQL и возвращает те строки в наборе результатов, которые соответствуют указанному шаблону. Также можно свести на нет действие оператора НРАВИТСЯ, добавив НЕ (что делает его НЕ НРАВИТСЯ), чтобы запрос возвращал набор результатов, который не соответствует указанному шаблону. Различные подстановочные знаки, которые можно использовать с оператором LIKE, обсуждаются ниже.
- % (Процент) – Процент используется для соответствия одному или нескольким символам в шаблоне и может быть указан в начале, конце или в середине шаблона для сопоставления.
- _ (Подчеркивание) — Подчеркивание используется для сопоставления одного символа в шаблоне и может быть указано в начале, конце или в середине шаблона для сопоставления.
- [] Скобка — Скобка используется для сопоставления одного символа из списка или диапазона символов и может быть указана в начале, конце или в середине шаблона для сопоставления. 9] Caret — После знака вставки в квадратных скобках следует список символов или диапазон символов для отрицательного соответствия одному символу в шаблоне, т. е. для проверки и гарантии того, что оцениваемый шаблон не содержит этот символ (символы) в указанной позиции.
- (!) Восклицательный знак — Восклицательный знак используется в качестве escape-символа для соответствия символам, которые обычно используются в качестве подстановочных знаков (т. е. всем упомянутым выше символам) в запросе LIKE. Символ ESCAPE указывает оператору LIKE рассматривать любой подстановочный знак, указанный после escape-символа, как обычный обычный символ в шаблоне.
SQL Server
Оператор LIKE
СинтаксисОсновной синтаксис оператора LIKE SQL Server следующий.
SELECT выражения ИЗ столов ГДЕ выражение LIKE | НЕ НРАВИТСЯ [шаблон [ESCAPE escape_character]];
В этом синтаксисе
- выражений — выражения, определяющие здесь столбцы или вычисления, которые вы хотите получить. Если вы хотите получить все столбцы, просто используйте * вместо выражений.
- таблицы — одна или несколько таблиц, из которых вы хотите получить данные.
- ГДЕ условия — Необязательно. Это используется для указания некоторых условий при выборе данных. Если вы не используете предложение WHERE, будут выбраны все доступные строки.
- LIKE – Логический оператор, используемый для сопоставления со строковым шаблоном.
- NOT LIKE — Логический оператор, используемый для отрицательного соответствия шаблону строки.
- шаблон – Строка, состоящая из алфавита, цифры, специального символа (включая подстановочные знаки) или одного или всех из них.
- ВЫХОД – Дополнительно. Ключевое слово, используемое для указания символа, используемого в качестве escape-символа.
- escape-символ — необязательно. Символ, используемый в качестве escape-символа. Обычно !.
Оператор SQL Server LIKE Примеры
ПРИМЕЧАНИЕ. Столбцы также называются полями или атрибутами, и эти термины взаимозаменяемы.
Давайте посмотрим, как это работает со всеми подстановочными знаками и типами запросов. Предположим, у нас есть таблица клиентов с приведенными ниже данными. Мы запросим его, используя LIKE, чтобы продемонстрировать различные сценарии использования.
customer_id | first_name | last_name | customer_email | customer_comment |
1 | Alicia | Keys | alicia_alicia@gmail. com | Хочу скидку 15% на следующую покупку |
2 | Инди | Росси | [email protected] | Когда следующая распродажа? |
3 | Джек | Смит | [email protected] | Есть ли распродажа на следующей неделе? Какая % скидка? |
4 | Пит | Уильямс | [email protected] | @help, служба поддержки |
5 | Casey | Kugelman | [email protected] | @help, please call me back |
6 | Lauren | Crow | [email protected] | Where новые обновления продукта? |
7 | Стивен | Fleming | [email protected] | NO Comments .. | NO.0246 [email protected] | Нужен обратный звонок и возврат 15% |
1) SQL Server
LIKE
– % (Letpercentage) 4 подстановочных знака, см. 9037 как мы можем использовать символ % в разных позициях в шаблоне для сопоставления нескольких символов с использованием таблицы клиентов.a) Проценты в конце примера
Приведенный ниже запрос является примером использования % для перечисления комментариев клиентов из таблицы клиентов, которые начинаются с буквы «w».
ВЫБОР * ОТ клиентов ГДЕ customer_comment НРАВИТСЯ 'w%';
Запрос выдаст следующий результат.
customer_id | first_name | last_name | customer_email | customer_comment |
2 | Indi | Rossi | [email protected] | When is следующая большая распродажа? |
6 | Lauren | Crow | [email protected] | Где новые обновления продуктов? |
b) Проценты в начале примера
Приведенный ниже запрос является примером использования % для перечисления клиентов, у которых есть идентификаторы электронной почты в gmail, т. е. идентификаторы электронной почты, которые заканчиваются на «gmail.com».
ВЫБЕРИТЕ * ОТ клиентов ГДЕ customer_email НРАВИТСЯ '%@gmail.com';
Запрос выдаст следующий результат.
customer_id | first_name | last_name | customer_email | customer_comment | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Alicia | Keys | [email protected] | I want a 15% скидка на следующую покупку | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | Инди | Росси | [email protected] | Когда следующая большая распродажа? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | Лорен | Кроу | [email protected] | Где новые обновления продукта? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7 | Стивен | Fleming | [email protected] | Комментарии. идентификаторы электронной почты, в которых есть «co. ».ВЫБЕРИТЕ * ОТ клиентов ГДЕ customer_email НРАВИТСЯ '%co.%'; Запрос выдаст следующий результат.
2) SQL Server LIKE – _ (подчеркивание) примеры подстановочных знаковДавайте посмотрим, как мы можем использовать символ _ в различные позиции в шаблоне для соответствия одному символу с использованием таблицы клиентов. Приведенный ниже запрос является примером использования _ для вывода имен клиентов, в которых вторым символом является «а». ВЫБЕРИТЕ * ОТ клиентов ГДЕ first_name LIKE '_a%'; Приведенный выше запрос будет генерировать следующий вывод.
b) Пример диапазона символовПриведенный ниже запрос представляет собой пример, в котором используется [] для вывода имен клиентов, начинающихся с любого символа из указанного диапазона от a до l (который включает 12 символов алфавита). ВЫБЕРИТЕ * ОТ клиентов ГДЕ first_name LIKE '[a-l]%'; Приведенный выше запрос будет генерировать следующий вывод.
|