Основы SQL Server: использование оператора SQL LIKE

Оператор LIKE T-SQL является одним из наиболее полезных дополнений к оператору SQL SELECT. Последний извлекает набор результатов, и вы можете легко фильтровать результаты, используя операторы равенства и клаузу WHERE, чтобы выбрать определенные условия. Но что насчет тех случаев, когда вы хотите выбрать строки, основанные на частичных значениях? Именно здесь и пригодится оператор SQL LIKE, и я покажу вам, как его использовать в этом руководстве.

Синтаксис SQL LIKE

Основный синтаксис оператора LIKE можно увидеть в следующем списке:

Реклама

  • Сначала вы указываете выражение, которое хотите сопоставить. Обычно это имя столбца.
  • Затем вы можете дополнительно указать NOT, чтобы сделать это выражение работающим для всех условий, которые не соответствуют. Использование условия NOT LIKE не является наиболее распространенным способом использования оператора LIKE.
  • Тогда вам нужно предоставить шаблон для сопоставления. Это может быть буквальным или может включать в себя символы-джокеры, которые делают процесс сопоставления намного более гибким.
  • Это может быть необязательно следует за символом эскейп, который можно использовать, чтобы помочь искать символы-джокеры.
  • Если какой-либо из аргументов не является типом данных строки символов, SQL Server преобразует его в тип данных строки символов.
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

SQL LIKE и символы-джокеры

Прежде чем мы углубимся в детали, вы должны знать, что сопоставление шаблонов SQL LIKE может включать обычные символы, а также символы-джокеры. Символы-джокеры позволяют вам выбрать конкретную строку символов, которая соответствует шаблону символа-джокера.

Для сопоставления шаблонов обычные символы должны соответствовать указанным в строке символов. Однако символы-джокеры могут соответствовать любым фрагментам строки символов. Использование символов-джокеров делает оператор LIKE более гибким, чем обычные операторы сравнения строк ( = и != ).

Оператор LIKE принимает четыре разных типа символов-джокеров. Каждый символ-джокер выполняет разную функцию сравнения, и вы можете узнать больше в следующей таблице.

Wildcard character Description
% (percent sign) Any string of zero or more characters.
_ (underscore) Any single character.
[ ] Any single character within the specified range [a-f] or set [abcdef].
[^] Any single character not within the specified range [^a-f] or set [^abcdef].
The four different types of wildcard characters to use with the LIKE operator.

Оператор LIKE возвращает TRUE, если match_expression соответствует указанному шаблону. Давайте рассмотрим несколько примеров, чтобы показать вам, как использовать оператор SQL LIKE с образцом базы данных AdventureWorksLT2019.

Реклама

Сопоставление нескольких символов-джокеров

% шаблон представляет собой ноль или более символов. Следующий запрос извлекает все строки из таблицы ‘Person.Person’, где ‘LastName’ начинается с буквы ‘A’.

USE AdventureWorksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE LastName LIKE 'A%';
Matching multiple wildcard characters (Image credit: Petri/Michael Otey)

Сопоставление шаблона для одного символа

_ шаблон представляет собой один символ. Следующий пример запроса извлекает все строки из таблицы ‘SalesLT.Product’, где ‘Name’ имеет ровно четыре символа любого типа, за которыми следует дефис.

USE AdventureWorksLT2019;

SELECT ProductID, Name FROM SalesLT.Product

WHERE Name LIKE '____-%';
Single character wildcard matching (Image credit: Petri/Michael Otey)

Сопоставление шаблона для набора символов

Wildcard-символ [] представляет любой отдельный символ в указанном диапазоне или наборе. Следующий оператор SQL извлекает все строки из таблицы ‘SalesLT.Product’, где ‘Name’ начинается с ‘B’, ‘C’ или ‘D’.

USE AdventureWorksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[BCD]%';
Wildcard matching for a set of characters (Image credit: Petri/Michael Otey)

Подстановка символов для диапазона символов

Также можно использовать оператор LIKE для поддержки поиска по диапазону. Этот запрос извлекает фамилии, заканчивающиеся на ‘ee’ и начинающиеся с любого отдельного символа между буквами ‘C’ и ‘L’.

Реклама

USE AdventureworksLT2019;

SELECT LastName, FirstName FROM SalesLT.Customer

WHERE LastName LIKE '[C-L]ee'
Wildcard matching for a range of characters (Image credit: Petri/Michael Otey)

Исключение символов, не входящих в указанный набор

Wildcard-символ [^] представляет любой отдельный символ, не входящий в указанный диапазон или набор. Следующий запрос извлекает все строки из таблицы ‘SalesLT.Product’, где ‘Name’ не начинается с ‘A’, ‘B’ или ‘C’.

USE AdventureworksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[^ABC]%';
Excluding characters that are not part of the specified set (Image credit: Petri/Michael Otey)

Использование нескольких условий с подстановочными символами

Оператор LIKE также может быть объединен с несколькими подстановочными символами в одном запросе. В следующем запросе используются несколько подстановочных символов SQL для извлечения всех строк из таблицы ‘Person.Person’, где ‘FirstName’ содержит букву ‘a’, а ‘LastName’ имеет любой символ, за которым следует ‘l’.

USE AdventureworksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE FirstName LIKE '%a%' AND LastName LIKE '_l%';
Using multiple wildcard matching conditions (Image credit: Petri/Michael Otey)

Поиск подстановочных символов

Использование подстановочных символов добавляет много мощности и гибкости оператору LIKE. Однако вам может быть интересно, как использовать LIKE для сопоставления с самими этими подстановочными символами.

Для этого вы можете заключить подстановочный символ в квадратные скобки, что позволяет использовать подстановочный символ как буквальный символ. Вы можете увидеть некоторые примеры в следующей таблице.

Pattern Search value
LIKE ‘%2[%]%’ 2%
LIKE ‘%[_]m%’ _m
LIKE ‘%[ [ ]%’ [
Searching for wildcard characters
  • Первый пример сопоставляет число 2, за которым следует символ подстановки процента.
  • Второй пример сопоставляет символ подчеркивания, за которым следует буква m.
  • Третий пример используется для сопоставления квадратных скобок.
(Image credit: Petri/Michael Otey)

Оператор LIKE SQL улучшает оператор SELECT SQL

Теперь вам следует лучше понять, как использовать оператор SQL LIKE для увеличения мощности и гибкости оператора SQL SELECT. Здесь я также показал вам, как использовать оператор LIKE с различными символами подстановки. Между сопоставлением нескольких символов подстановки, выполнением сопоставления одиночного символа, сопоставлением набора символов или исключением символов из результатов у вас действительно есть много возможностей.

Source:
https://petri.com/sql-like/