Для чего используется оператор like
LIKE (Transact-SQL)
Синтаксические обозначения в 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 передается хранимой процедуре, а затем с помощью сравнения с шаблоном выполняется поиск всех сотрудников, чьи фамилии начинаются с указанной последовательности букв.
Процедура из следующего примера выполняется успешно, так как завершающие пробелы к переменной типа 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», за которым следует любая строка с числом символов от нуля и больше.
Использование символов-шаблонов в качестве литералов
Символы-шаблоны могут быть использованы в качестве литералов. Чтобы использовать символ-шаблон в качестве литерала, его необходимо заключать в скобки. В следующей таблице представлены несколько примеров применения ключевого слова 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
Если в шаблоне LIKE после escape-символа нет никакого символа, то шаблон является недопустимым и оператор LIKE возвращает значение FALSE. Если символ после escape-символа не является символом-шаблоном, то escape-символ игнорируется, а следующий символ рассматривается как обычный символ в шаблоне. К этим символам-шаблонам относятся: подчеркивание (_), процент (%) и левая квадратная скобка ([), в том случае, если они заключены в квадратные скобки. Escape-символы могут использоваться в квадратных скобках ([ ]), включая: знак вставки (^), дефис (-) и правую квадратную скобку (]).
Символ 0x0000 (char(0)) не определен в параметрах сортировки Windows, и его нельзя включать в LIKE.
Примеры
A. Применение оператора LIKE с символом-шаблоном %
Б. Применение оператора NOT LIKE с символом-шаблоном %
В. Применение предложения ESCAPE
Г. Использование символов-шаблонов [ ]
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
Д. Применение оператора LIKE с символом-шаблоном %
Е. Применение оператора NOT LIKE с символом-шаблоном %
Ж. Применение оператора LIKE с символом-шаблоном _
Использование критерия Like для поиска данных
Условия или оператор Like используются в запросе для поиска данных, которые соответствуют определенному шаблону. Например, в нашей базе данных есть таблица «Клиенты», как по примеру ниже, и нам нужно найти только клиентов, живущих в городах, названия которых начинаются с «B». Вот как мы создадим запрос и будем использовать условия Like:
«Клиенты»:
На вкладке Создание нажмите кнопку Конструктор запросов.
Нажмите кнопку «Добавить», и таблица «Клиенты» будет добавлена в конструктор запросов.
Дважды щелкните поля «Фамилия» и «Город», чтобы добавить их в сетку конструктора запросов.
В поле «Город» добавьте условия «Нравится B*» и нажмите кнопку «Выполнить».
В результатах запроса будут отбираться только клиенты из названий городов, названия которых начинаются с буквы «B».
Дополнительные информацию об использовании критериев см. в этой теме.
Использование оператора Like в SQL в синтаксис
Если вы предпочитаете синтаксис SQL (язык SQL), вот как это сделать:
Откройте таблицу «Клиенты» и на вкладке «Создание» нажмите кнопку «Конструктор запросов».
На вкладке «Главная» нажмите кнопку «> SQL», а затем введите следующий синтаксис:
SELECT [Last Name], City FROM Customers WHERE City Like “B*”;
Щелкните вкладку запроса правой кнопкой мыши и выберите > «Закрыть».
Дополнительные сведения см. в SQL Access: основные понятия, лексика и синтаксис, а также о том, как изменять SQL для более четкого получения результатов запроса.
Примеры шаблонов условий Like и результатов
Условия или оператор Like удобны при сравнении значения поля с строкным выражением. Следующий пример возвращает данные, которые начинаются с буквы P, за которой идут любая буква от A до F и три цифры:
Вот несколько способов использования like для различных шаблонов:
Если ваша база данных имеет
соответствие, вы увидите
Если в базе данных нет
совпадений, вы увидите
Условия запросов. Часть 2: оператор LIKE
В части 1 этого трехсерийного ряда мы рассматривают базовый пример использования критериев в запросе, чтобы более подробно задать вопрос запроса. Это очень хорошо, если вы точно знаете, что ищите. Но что делать, если вы хотите увидеть неначертные совпадения — скажем, все, чьи фамилии начинаются с «Th?». Вам повезло: в Access есть мощные средства, которые можно использовать в условиях запроса для извлечения неиспольстиковых совпадений: поддиактные знаки и оператор LIKE.
Поддиавные знаки
Если вы когда-либо играли в игру, вы можете угадать, что делать с подменю: их можно заменить другими символами. В любой базе данных можно использовать только пять поддиавных знаков. Пять из них соответствуют стандарту ANSI-89, а остальные соответствуют стандарту ANSI-92. каждая база данных поддерживает один стандартный или другой, но не обе. Вы можете задать стандарт ANSI.
Знаки ANSI-89
Соответствует любому количеству символов.
Звездочку можно использовать в любом месте строки символов.
По этой причине будет по-настоящему найти «что», «белое» и «зачем», но не «некоторое» или «часы».
Соответствует любому одиночному символу алфавита.
По найму будут найти «ст?ст?», «колокольчик» и «счет»
Используется вместе с другими символами (заключенными в скобки).
Соответствует любому одиночному символу, указанному в квадратных скобках.
По метке «ст[ оу] ст» будут найти «ст» и «колокольчик», но не «счет»
Используется в скобках вместе с другими символами.
Соответствует любому символу, не указанному в квадратных скобках.
b[! ст ] ll найдет «счет» и «ст», но не «ст», «ст» или «колокольчик»
Используется в скобках вместе с другими символами.
Соответствует любому символу из диапазона.
Диапазон следует указывать в алфавитном порядке (от А до Я, а не от Я до А).
Поиск[а-ы]н находит «плохое», «bbd» и «bcd»
Соответствует любому цифровому символу.
1#3 находит 103, 113, 123
Знаки ANSI-92
Соответствует любому количеству символов.
Может использоваться в качестве первого или последнего символа в строке символов.
wh % находит то, что, белое и почему, но не через некоторое время или смотреть.
Соответствует любому одиночному символу алфавита.
B_ll поимки «стюл», «колокольчик» и «счет»
Используется вместе с другими символами.
Соответствует любому одиночному символу, указанному в квадратных скобках.
По метке «ст[ оу] ст» будут найти «ст» и «колокольчик», но не «счет»
Используется в скобках вместе с другими символами.
Соответствует любому символу, не указанному в квадратных скобках.
По найму ст[^ оу ] будут будут найти «ст» и «ст», но не «ст», «ст» или «колокольчик»
Используется в скобках вместе с другими символами.
Соответствует любому символу из диапазона.
Диапазон следует указывать в алфавитном порядке (от А до Я, а не от Я до А).
Пои[а-ы]н находит «плохое», «bbd»
Оператор LIKE
В любом критерии, где используются поддиавные знаки, в Access требуется слово «Нравится». Оператор LIKE используется непосредственно перед строкой, содержаной поддиавные знаки. Access также требуется, чтобы строка была окружена кавычками. Например, чтобы найти соответствие текстовым данным с буквой T, используйте такое выражение:
В последних версиях Access добавляет оператор LIKE и кавычка, если вы их опустить. Поэтому если вы используете выражение *t* Access изменяет его на Like «*t*» при запуске запроса или перемещение курсора за пределы критерия.
См. like и поддиавные знаки в действии
Если вы хотите посмотреть видеоролик, демонстрирующий использование этих инструментов, посмотрите этот видеоролик с YouTube в области «Нравится» и поддиавными знаками в условиях запроса Access.
Далее в части 3 этого трехсерийного ряда: запрос на ввод данных с помощью параметра.
Например, оператор (Microsoft Access SQL)
Область применения: Access 2013 | Access 2016
Сравнивает строковую экспрессию с шаблоном в SQL выражения.
Синтаксис
выражение Like «pattern»
Синтаксис оператора Like состоит из следующих частей:
Part | Описание |
---|---|
выражение | SQL выражения, используемом в пункте WHERE. |
pattern | Строка или строка символов буквальная, с которой сравнивается выражение. |
Примечания
В выражении можно использовать оператор Like для сравнения значения поля со строкой. Например, если вы вводите SQL запрос, запрос возвращает все значения поля, начиная Like «C*» с буквы C. В запросе параметра можно подсказать пользователю поиск шаблона.
В следующем примере возвращаются данные, которые начинаются с буквы P, а затем любые буквы между буквами A и F и тремя цифрами:
В следующей таблице показано, как можно использовать Like для тестирования выражений для различных шаблонов.
Тип совпадения | Pattern | Match (возвращает true) | Нет совпадения (возвращает false) |
---|---|---|---|
Несколько символов | a*a | aa, aBa, aBBBa | aBC |
ab | ABC, AABB, Xab | aZb, bac | |
Специальный символ | a[*]a | a*a | aaa |
Несколько символов | ab* | abcdefg, abc | cab, aab |
Одиночный символ | a?a | aaa, a3a, aBa | aBBBa |
Однозначная цифра | a#a | a0a, a1a, a2a | aaa, a10a |
Диапазон символов | [a-z] | f, p, j | 2, & |
Вне диапазона | [!a-z] | 9, &% | b, a |
Не цифры | [!0-9] | A, a, &, | 0, 1, 9 |
Комбинированные | a[!b-m] # | An9, az0, a99 | abc, aj0 |
Пример
В этом примере возвращается список сотрудников, имена которых начинаются с букв A через D. Он вызывает процедуру EnumFields, которую можно найти в примере заявления SELECT.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Оператор Like
Используется для сравнения двух строк.
Синтаксис
результат = строка Like pattern
Синтаксис оператора Like состоит из следующих частей:
Part | Описание |
---|---|
result | Обязательный элемент; любая числовая переменная. |
строка | Обязательный элемент; любое строковое выражение. |
pattern | Обязательный элемент; любое строковое выражение, соответствующее соглашениям о сопоставлении шаблонов, описанным в разделе «Замечания». |
Примечания
Если аргумент string соответствует аргументу pattern, значением result будет являться True; если не соответствует — значением result будет являться False. Если строка или шаблон Null, результат Null.
Поведение оператора Like зависит от оператора Option Compare. Методом по умолчанию для сравнения строк для каждого модуля является Option Compare Binary.
Метод Option Compare Binary выдает результат сравнения строк на основе порядка сортировки, выводимого из внутреннего двоичного представления знаков. Порядок сортировки определяется кодовой страницей.
В следующем примере показан типичный бинарный порядок сортировки:
Метод Option Compare Text выдает результат сравнения строк на основе порядка сортировки текста без учета регистра букв, определяемого языковым стандартом системы. Сортировка тех же знаков с использованием метода Option Compare Text дает следующий порядок сортировки:
Встроенное сопоставление шаблона предоставляет универсальное средство для сравнения строк. Возможности сопоставления шаблона позволяют использовать подстановочные знаки, списки знаков или диапазоны знаков в любой комбинации, чтобы сопоставить строки. В следующей таблице представлены знаки, разрешенные для использования в аргументе pattern, и объясняется, чему они соответствуют:
Символы в шаблоне | Совпадения в строке |
---|---|
? | Любой отдельный знак. |
* | Ноль или больше знаков. |
# | Любая однозначная цифра (0-9). |
[шарлист] | Любой отдельный знак, представленный в charlist. |
[ ! шарлист ] | Любой отдельный знак, не представленный в charlist. |
Группа из одного или более символов (шарлист), заключенная в скобки ( [ ] можно использовать для совпадения любого отдельного символа в строке и может включать практически любой код символов,включая цифры.
Чтобы соответствовать специальным символам левой скобки ([), знака вопроса (?), знака номера () и звездочки (), заключив их # в * скобки. Правая кронштейна (] не может использоваться в группе, чтобы соответствовать себе, но она может быть использована за пределами группы в качестве отдельного символа.
С помощью дефис () для отделить верхние и нижние границы диапазона, шарлист может указать — диапазон символов. Например, приводит к совпадению, если соответствующее положение символов в строке содержит буквы верхнего шкафа в [A-Z] диапазоне A-Z. Несколько диапазонов могут включаться в квадратные скобки без использования каких-либо разделителей.
Значение указанного диапазона зависит от порядка расположения знаков, допустимого во время выполнения (определяется оператором Option Compare и языковыми настройками системы, в которой выполняется код). В примере Option Compare Binary диапазон совпадает [A-E] с A, B и E. С параметром Сравнение текста, [A-E] соответствует A, A, À, à, B, b, E, e. Данный диапазон не определяет сопоставление для Ê или ê, поскольку символы с надстрочными знаками располагаются по порядку сортировки после символов без надстрочных знаков.
Также имеются другие важные правила для сопоставления шаблона:
Восклицательный знак (!) в начале charlist означает, что выполняется сопоставление, если любой знак, кроме знаков, указанных в charlist, будет найден в аргументе string. При использовании вне квадратных скобок восклицательный знак сопоставляется самому себе.
Дефис () может отображаться либо в начале (после восклицания, если используется), либо в конце шарлиста, чтобы соответствовать — самому себе. На любой другой позиции дефис используется для указания диапазона знаков.
При задании диапазона знаков они должны отображаться по возрастающему порядку сортировки (от наименьшего к наибольшему). [A-Z] является допустимым шаблоном, но [Z-A] это не так.
Последовательность символов [] считается строкой нулевой длины («»).
В некоторых языках имеются специальные знаки в алфавите, представляющие два отдельных знака. Например, в нескольких языках используется знак «æ» для представления знаков «a» и «e», когда они отображаются вместе. Оператор Like распознает, что такой отдельный специальный знак и соответствующие два отдельных знака являются эквивалентными.
Когда языки, в которых используются специальные знаки, указываются в языковых настройках системы, отдельный специальный знак в аргументе pattern либо в аргументе string сопоставляется с эквивалентной 2-знаковой последовательностью в другой строке. Аналогичным образом отдельный специальный знак в аргументе pattern, заключенный в квадратные скобки (указанный отдельно, в списке или в диапазоне), сопоставляется с эквивалентной 2-знаковой последовательностью в string.
Пример
В этом примере оператор Like используется для сравнения строки с шаблоном.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.