- Оператор SQL LIKE
- Как оператор
- Примеры: оператор SQL LIKE
- LIKE (Transact-SQL)
- Синтаксис
- Аргументы
- Типы результата
- Значение результата
- Комментарии
- Совпадение с шаблоном с использованием оператора LIKE
- Использование символа-шаблона «%»
- Использование символов-шаблонов в качестве литералов
- Совпадение с шаблоном с помощью предложения ESCAPE
- Примеры
- A. Применение оператора LIKE с символом-шаблоном %
- Б. Применение оператора NOT LIKE с символом-шаблоном %
- В. Применение предложения ESCAPE
- Г. Использование символов-шаблонов [ ]
- Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
- Д. Применение оператора LIKE с символом-шаблоном %
- Е. Применение оператора NOT LIKE с символом-шаблоном %
- Ж. Применение оператора LIKE с символом-шаблоном _
Оператор SQL LIKE
Как оператор
LIKE — это стандартный оператор ANSI / ISO для сравнения значения столбца с другим значением столбца или строкой в кавычках. Возвращает 1 (ИСТИНА) или 0 (ЛОЖЬ)
Оператор SQL LIKE применяется только к полю типов CHAR или VARCHAR, чтобы соответствовать шаблону.
Чтобы соответствовать шаблону из слова, специальные операторы и символы подстановки могли использоваться с оператором LIKE.
Оператор LIKE может использоваться в любом допустимом операторе SQL, таком как SELECT , INSERT INTO , UPDATE или DELETE .
Синтаксис:
Параметры:
название | Описание |
---|---|
column_list | Список столбцов таблицы. |
table_name | Наименование таблицы. |
column_name | Имя столбца, который будет участвовать в акции с оператором LIKE. |
ГДЕ | Проверяет, соответствует ли выражение шаблону. И выражение, и шаблон могут быть любыми допустимыми выражениями и оцениваются как строки. Используйте NOT LIKE, чтобы проверить, не соответствует ли строка шаблону. Шаблоны могут использовать следующие подстановочные знаки SQL: |
Подстановочные знаки SQL :
Подстановочные знаки SQL можно использовать для поиска данных в таблице.
Подстановочные знаки SQL используются с оператором SQL LIKE.
Логический оператор NOT в операторе select можно использовать в качестве подстановочного оператора NOT LIKE.
В SQL подстановочные знаки:
Wildcards | Описание |
---|---|
% | Знак процента (%) представляет собой последовательность из 0 (ноль) или более символов. |
Нижнее подчеркивание ( _ ) | Символ подчеркивания (_) представляет один символ. |
[Charlist] | Он представляет любой отдельный символ в списке |
[^ charlist] или [! charlist] | Он представляет любой отдельный символ, кроме charlist |
Иллюстрированная презентация: оператор SQL LIKE
Примеры: оператор SQL LIKE
Содержание:
Процент подстановочных знаков SQL (%)
Образец таблицы: клиент
Чтобы получить ‘cust_code’, ‘cust_name’, ‘cust_city’ и ‘cust_country’ из таблицы ‘customer’ со следующим условием —
1. cust_name должно начинаться с буквы S,
можно использовать следующий оператор SQL:
Процент подстановочных знаков SQL (%) с логическим значением NOT
Пример таблицы: агенты
Получить все столбцы из таблицы «агенты» со следующим условием —
1. ‘agent_name’ не инициируется буквой ‘M’,
можно использовать следующий оператор SQL:
Равно (=) против LIKE
Оператор equals to (=) является оператором сравнения и используется для проверки равенства в двух числах или выражениях. Например :
Оператор LIKE проверяет, соответствует ли конкретная символьная строка указанному шаблону. Например:
LIKE обычно используется только со строками, а equals (=) используется для точного сопоставления, и это кажется быстрее.
Пример: символ подстановки SQL подчеркивается (_)
Символ подчеркивания (_) представляет один символ, соответствующий шаблону из слова или строки. Можно использовать более одного (_) символа подчеркивания для соответствия шаблону из нескольких символов.
Образец таблицы: клиент
Чтобы получить ‘cust_code’, ‘cust_name’, ‘cust_city’ и ‘cust_country’ из таблицы ‘customer’ при следующих условиях —
1. имя cust_name должно начинаться с буквы «R»,
2. третья буква «cust_name» должна быть «m»,
3. и вторая буква ‘cust_name’ может быть любой,
можно использовать следующий оператор SQL:
Подстановочные знаки SQL подчеркивают (_) несколько символов
Образец таблицы: клиент
Чтобы получить ‘cust_code’, ‘cust_name’, ‘cust_city’ и ‘cust_country’ из таблицы ‘customer’ при следующих условиях —
1. первые три буквы ‘cust_name’ могут быть любыми буквами
2. четвертая буква «cust_name» должна быть «l»
3. а остальное может быть любым
можно использовать следующий оператор SQL:
Подстановочные знаки SQL подчеркивания (_) для определенной длины
Образец таблицы: клиент
Чтобы получить ‘cust_code’, ‘cust_name’, ‘cust_city’ и ‘cust_country’ из таблицы ‘customer’ при следующих условиях —
1. первые три буквы ‘cust_name’ могут быть любыми буквами
2. четвертая буква «cust_name» должна быть «l»
3. и строка должна быть длиной 4 буквы
можно использовать следующий оператор SQL:
Пример: подстановочные знаки SQL [charlist]
[Charlist] WILDCARDS используются для представления любого отдельного символа в списке символов.
[^ Charlist] и [! Charlist] WILDCARDS используются для обозначения любого отдельного символа, отсутствующего в списке символов.
Пример таблицы: агенты
Чтобы получить все строки из таблицы «агенты» со следующим условием —
1. ‘agent_name’ должно начинаться с буквы ‘a’ или ‘b’ или ‘i’
можно использовать следующий оператор SQL:
Пример: подстановочные знаки SQL [^ charlist]
Пример таблицы: агенты
Чтобы получить все строки из таблицы «агенты» со следующим условием —
1. имя агента не должно начинаться с буквы «а», «b» или «i»,
можно использовать следующий оператор SQL:
Пример: подстановочные знаки SQL [! Charlist]
Пример таблицы: агенты
Чтобы получить все строки из таблицы «агенты» со следующим условием —
1. имя агента не должно начинаться с буквы «а», «b» или «i»,
можно использовать следующий оператор SQL:
Упражнения по SQL
Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.
Предыдущая: СУЩЕСТВУЕТ
Далее: Подчеркнуть (_)
Источник
LIKE (Transact-SQL)
Применимо к: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Параллельное хранилище данных
Определяет, совпадает ли указанная символьная строка с заданным шаблоном. Шаблон может включать обычные символы и символы-шаблоны. Во время сравнения с шаблоном необходимо, чтобы его обычные символы в точности совпадали с символами, указанными в строке. Символы-шаблоны могут совпадать с произвольными элементами символьной строки. Использование символов-шаблонов в отличие от использования операторов сравнения строки (= и !=) делает оператор LIKE более гибким. Если тип данных одного из аргументов не является символьной строкой, компонент Компонент SQL Server Database Engine, если это возможно, преобразует его в тип данных символьной строки.
Синтаксические обозначения в Transact-SQL
Синтаксис
ESCAPE и STRING_ESCAPE сейчас не поддерживаются в Azure Synapse Analytics и Система платформы аналитики (PDW).
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
match_expression
Любое допустимое выражение expression символьного типа данных.
pattern
Конкретная строка символов для поиска в match_expression может содержать следующие допустимые символы-шаблоны. Длина значения pattern не может превышать 8000 байт.
Символ-шаблон | Описание | Пример |
---|---|---|
% | Любая строка, содержащая ноль или более символов. | Инструкция WHERE Название LIKE ‘%компьютер%’ выполняет поиск и выдает все названия книг, содержащие слово «компьютер». |
_ (подчеркивание) | Любой одиночный символ. | Инструкция WHERE фамилия_автора LIKE ‘_етров’ выполняет поиск и выдает все имена, состоящие из шести букв и заканчивающиеся сочетанием «етров» (Петров, Ветров и т.п.). |
[ ] | Любой одиночный символ, содержащийся в диапазоне ([a-f]) или наборе ([abcdef]). | Инструкция WHERE Фамилия_автора LIKE ‘[Л-С]омов’ выполняет поиск и выдает все фамилии авторов, заканчивающиеся на «омов» и начинающиеся на любую букву в промежутке от «Л» до «С», например Ломов, Ромов, Сомов и т.п. При выполнении операции поиска в диапазоне символы, включенные в диапазон, могут изменяться в зависимости от правил сортировки параметров сортировки. |
[^] | Любой одиночный символ, не содержащийся в диапазоне ([^a-f]) или наборе ([^abcdef]). | Инструкция WHERE Фамилия_автора LIKE ‘ив[^а]%’ выполняет поиск и выдает все фамилии, начинающиеся на «ив», в которых третья буква отличается от «а». |
escape_character
Символ, помещаемый перед символом-шаблоном для того, чтобы символ-шаблон рассматривался как обычный символ, а не как шаблон. Аргумент escape_character является символьным выражением, не имеющим значения по умолчанию и возвращающим результат в виде одного символа.
Типы результата
Boolean
Значение результата
Оператор LIKE возвращает значение TRUE, если аргумент match_expression совпадает с указанным аргументом pattern.
Комментарии
При использовании оператора LIKE для сравнения строк во внимание принимаются все символы строки-шаблона. К значимым символам также относятся начальные и конечные пробелы. Если операция сравнения в запросе должна вернуть все строки, содержащие строки LIKE ‘абв ‘ (с символом пробела на конце), то строка, содержащая «абв» (без пробела), не будет возвращена. Однако завершающие пробелы в выражении, с которым сравнивается шаблон, не учитываются. Если операция сравнения в запросе должна вернуть все строки, содержащие строки LIKE ‘абв’ (без знака пробела на конце), то будут возвращены все строки, содержащие «абв», как с завершающими пробелами, так и без них.
При сравнении строк с помощью оператора LIKE с использованием шаблона, содержащего тип данных char и varchar, могут возникнуть проблемы из-за методов хранения каждого типа данных. В ходе выполнения следующего примера локальная переменная char передается хранимой процедуре, а затем с помощью сравнения с шаблоном выполняется поиск всех сотрудников, чьи фамилии начинаются с указанной последовательности букв.
Выполнение процедуры FindEmployee не дает результатов, так как переменная типа char ( @EmpLName ) всегда имеет длину в 20 символов, до которой дополняется завершающими знаками пробела. Переменные, содержащиеся в столбце LastName , имеют тип varchar. Поэтому завершающие пробелы в них не дописываются. Данная процедура завершается неудачей, так как завершающие пробелы учитываются.
Процедура из следующего примера выполняется успешно, так как завершающие пробелы к переменной типа varchar не добавляются.
Совпадение с шаблоном с использованием оператора LIKE
Оператор LIKE поддерживает шаблоны в ASCII и Юникоде. Если все аргументы (match_expression, pattern и escape_character, если он указан) имеют символьный тип ASCII, то применяется шаблон ASCII. В случае, когда какой-либо из аргументов имеет тип данных Юникод, выполняется преобразование всех аргументов в Юникод и применяется шаблон Юникод. Если вы используете оператор LIKE с типом данных Юникода (nchar или nvarchar), завершающие пробелы учитываются в отличие от других типов данных (не Юникода). Работа оператора LIKE с данными в Юникоде совместима со стандартом ISO. Принцип работы оператора LIKE с данными ASCII совместим с более ранними версиями SQL Server.
Приведенные ниже примеры поясняют различия между результатами сравнения данных с шаблонами оператора LIKE, представленными в Юникоде и ASCII.
Операции сравнения с помощью оператора LIKE зависят от параметров сортировки. Дополнительные сведения см. в разделе COLLATE (Transact-SQL).
Использование символа-шаблона «%»
Если в операторе LIKE указать символ ‘5%’, то компонент Компонент Database Engine будет искать число «5», за которым следует любая строка с числом символов от нуля и больше.
Например, при выполнении следующего примера отображаются все динамические административные представления базы данных AdventureWorks2012, так как все они начинаются символами dm .
Чтобы отобразить все объекты, не являющиеся динамическими административными представлениями, используется синтаксис NOT LIKE ‘dm%’ . Например, если всего имеется 32 объекта и оператор LIKE выдает 13 наименований, совпадающих с шаблоном, то оператор NOT LIKE возвращает 19 объектов, не соответствующих указанному в операторе LIKE шаблону.
По такому шаблону, как LIKE ‘[^d][^m]%’ , не всегда будут возвращаться одни и те же имена. Вместо 19 имен можно найти только 14, так как имена, которые начинаются с буквы d или у которых второй буквой является m , будут исключены из результата, как и имена динамических административных представлений. Причиной такой реакции на событие является поэтапный поиск отрицательных символов-шаблонов: за один шаг обрабатывается один символ-шаблон. Процесс поиска совпадений прекращается при возникновении сбоя на любой стадии выполнения.
Использование символов-шаблонов в качестве литералов
Символы-шаблоны могут быть использованы в качестве литералов. Чтобы использовать символ-шаблон в качестве литерала, его необходимо заключать в скобки. В следующей таблице представлены несколько примеров применения ключевого слова LIKE вместе с символами-шаблонами [ ].
Символ | Значение |
---|---|
LIKE ‘5[%]’ | 5 % |
LIKE ‘[_]n’ | _n |
LIKE ‘[a-cdf]’ | a, b, c, d или f |
LIKE ‘[-acdf]’ | -, a, b, c, d или f |
LIKE ‘[ [ ]’ | [ |
LIKE ‘]’ | ] |
LIKE ‘abc[_]d%’ | abc_d и abc_de |
LIKE ‘abc[def]’ | abcd, abce и abcf |
Совпадение с шаблоном с помощью предложения ESCAPE
Можно искать символьные строки, в состав которых входит один или более специальных символов-шаблонов. Например, таблица discounts базы данных customers может содержать значения скидок, включающих знак процента (%). Чтобы выполнить поиск знака процента в качестве символа-шаблона, необходимо ввести ключевое слово ESCAPE и escape-символ. Например, образец базы данных содержит столбец с именем comment, в котором хранится значение «30%». Чтобы найти строки, содержащие последовательность символов «30%» в столбце comment, необходимо указать предложение WHERE, например WHERE comment LIKE ‘%30!%%’ ESCAPE ‘!’ . Если предложение ESCAPE и escape-символ не указаны, компонент Компонент Database Engine вернет все записи, содержащие последовательность символов «30!».
Если в шаблоне LIKE после escape-символа нет никакого символа, то шаблон является недопустимым и оператор LIKE возвращает значение FALSE. Если символ после escape-символа не является символом-шаблоном, то escape-символ игнорируется, а следующий символ рассматривается как обычный символ в шаблоне. К этим символам-шаблонам относятся: подчеркивание (_), процент (%) и левая квадратная скобка ([), в том случае, если они заключены в квадратные скобки. Escape-символы могут использоваться в квадратных скобках ([ ]), включая: знак вставки (^), дефис (-) и правую квадратную скобку (]).
Символ 0x0000 (char(0)) не определен в параметрах сортировки Windows, и его нельзя включать в LIKE.
Примеры
A. Применение оператора LIKE с символом-шаблоном %
В следующем примере в таблице 415 выполняется поиск всех телефонных номеров с кодом города PersonPhone .
Б. Применение оператора NOT LIKE с символом-шаблоном %
В следующем примере в таблице PersonPhone выполняется поиск всех телефонных номеров с региональным кодом, отличным от 415 .
В. Применение предложения ESCAPE
В следующем примере предложение ESCAPE и escape-символ используются для поиска символьной строки 10-15% в столбце c1 таблицы mytbl2 .
Г. Использование символов-шаблонов [ ]
В следующем примере выполняется поиск в таблице Person сотрудников с именем Cheryl или Sheryl .
В следующем примере выполняется поиск строк в таблице Person для сотрудников с фамилией Zheng или Zhang .
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
Д. Применение оператора LIKE с символом-шаблоном %
В следующем примере в таблице DimEmployee выполняется поиск всех сотрудников, телефонные номера которых начинаются с 612 .
Е. Применение оператора NOT LIKE с символом-шаблоном %
В следующем примере в таблице DimEmployee выполняется поиск всех телефонных номеров, которые не начинаются с 612 . .
Ж. Применение оператора LIKE с символом-шаблоном _
В следующем примере в таблице DimEmployee выполняется поиск всех телефонных номеров, начинающихся с 2 и заканчивающихся на 6 . Подстановочный знак «%» добавлен в конце шаблона поиска, что соответствует любым следующим символам в значениях столбца с телефонными номерами.
Источник