Like vba access: Оператор Like — Служба поддержки Майкрософт
Содержание
Оператор Like — Служба поддержки Майкрософт
Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Еще…Меньше
Сравнивает строковое выражение с шаблоном в выражении SQL.
Синтаксис
выражение
Like «шаблон«
Синтаксис оператора Like включает в себя следующие компоненты:
|
|
|
Выражение SQL, используемое в предложении WHERE.
|
|
Строка или строковый литерал, с которыми сравнивается выражение.
|
Замечания
Оператор Like можно использовать для поиска значений полей, соответствующих указанному шаблону. В качестве шаблона можно задать полное значение (например, Like “Smith”) или использовать подстановочные знаки, чтобы получить диапазон значений (например, Like “Sm*”)).
Оператор Like можно использовать в выражении для сравнения значений полей с строками. Например, если ввести Like “C*” запросе SQL, запрос возвратит все значения полей, начиная с буквы C. В запрос с параметрами запрос на поиск шаблона.
Следующий пример возвращает данные, которые начинаются с буквы P, за которой идут любая буква от A до F и три цифры:
Like “P[A-F]###”
В следующей таблице показано, как использовать оператор Like для проверки на соответствие различным шаблонам:
|
|
|
|
Несколько символов
|
а*а
|
аа, aБa, aБББa
|
aБВ
|
*aб*
|
aбв, AAББ, Цaб
|
aШб, бaв
| |
Особые символы
|
а[*]а
|
а*а
|
ааа
|
Несколько символов
|
aб*
|
aбвгдеё, aбв
|
вaб, aaб
|
Один символ
|
а?а
|
ааа, а3а, aБa
|
aБББa
|
Одна цифра
|
а#а
|
а0а, а1а, а2а
|
ааа, а10а
|
Диапазон символов
|
[a-я]
|
д, о, и
|
2, &
|
Вне диапазона
|
[!a-я]
|
9, &, %
|
б, a
|
Не цифра
|
[!0-9]
|
А, а, &, ~
|
0, 1, 9
|
Смешанный
|
a[!б-л]#
|
Aм9, aя0, a99
|
aбв, aи0
|
оператор VBA для сравнения строки с шаблоном.
Нечеткий поиск
Кроме сравнения строк с использованием операторов «равно», «больше» и «меньше», в языке Visual Basic for Applications (VBA) доступен оператор Like, который можно использовать только для сравнения строк.
Сравнение строки с шаблоном
Оператор Like выполняет особый тип операции сравнения строк, определяя совпадает ли строка с заданным образцом (шаблоном). Этот оператор используется также для поиска в текстовой информации слов, фраз и определенных символов, совпадающих с заданным шаблоном. Такой тип поиска часто называют нечетким поиском.
Специальные символы совпадения с образцом для оператора Like
Образец, с которым должна сравниваться строка, задается при помощи различных специальных символов, представленных в таблице ниже.
Использование символов совпадения рассмотрим на примере процедуры, удаляющей всю строку активного рабочего листа, при нахождении в этой строке ячейки с искомым текстом (шаблоном).
Если Shablon=»*Круг 2#*», то на листе будут удалены все строки, в которых найдутся слова «Круг 20», «Круг 25» и так далее.
Если Shablon=»S*e», то на листе будут удалены все строки, в ячейках которых будут найдены слова «Sadie», «Salone», «Sophie», «Steve» и так далее.
Если Shablon=»P???y», то удалены будут строки со словами «Penny», «Persy», «Patty» и так далее.
Две последние спецификации символов совпадения из вышеприведенной таблицы используются для указания отдельных символов, совпадение или несовпадение с которыми нужно при поиске. Ниже приведены выражения, использующие квадратные скобки с символьным списком.
Если Shablon=»bi[dg]», то строки со словами в ячейках «bid» и «big» будут удалены, а со словами «bit» и «bin» останутся нетронутыми.
Если же Shablon=»bi[!dg]», то результат будет обратным.
Квадратные скобки можно также использовать для указания диапазона символов, совпадение или несовпадение с которыми необходимо, например Shablon=»ci[a-f]» или Shablon=»ci[!a-f]». В таких случаях диапазоны необходимо указывать от наименьшего до наибольшего символа. Квадратные скобки, в которых ничего не заключено — VBA игнорирует.
Квадратные скобки используются и в тех случаях, когда необходимо сами специальные символы сделать частью шаблона. Например, для того чтобы найти все строки, заканчивающиеся вопросительным знаком, необходимо задать шаблон следующим образом: Shablon=»*[?]».
Для совпадения со знаком дефиса в строке шаблона, дефис помещается в начало или в конец списка символов внутри квадратных скобок. Дефис, помещенный в любое другое место, задает диапазон символов.
Если Shablon=»*g[-]*», то совпадениями будут считаться выражения «big-headed», «plug-ugly», «tag-along» и так далее.
Результат сравнения строк VBA-оператором Like зависит от инструкции Option Compare. При двоичном сравнении оператор различает буквы верхнего и нижнего регистра, а при текстовом — нет.
Другие материалы по теме:
VBA SQL — LIKE
Оператор LIKE использует подстановочные знаки для сопоставления шаблонов в данных.
Если указанный столбец содержит NULL, то результат не определен 5
Условия поиска могут содержать как числа, так и буквенные символы. «%» и «_» можно использовать в любой комбинации с литеральными символами. Если вам нужно сопоставить фактические символы «% » или «_», затем используйте параметр Escape и поставьте перед ними обратную косую черту (\)
Буквенные символы или строки заключены в одинарные кавычки
Это работает в SQL Server, но не в Access, поскольку % интерпретируется по-другому
SELECT *
ОТ КЛИЕНТОВ C
WHERE C. companyname LIKE 'a%'
Это работает в SQL Server, но не в Access
SELECT DISTINCT Country
FROM CUSTOMERS
WHERE Country LIKE '[A-F]%'
—% в SQL Server означает любая строка из нуля или более символов
—% в Access означает ноль или более символов, но не работает
_
SELECT *
FROM CUSTOMERS C
WHERE C.companyname LIKE 'a_'
*
SELECT *
FROM CUSTOMERS C
WHERE C.companyname LIKE 'a*'
#
Это работает в Access, но не в SQL Server
SELECT * 900 03 ОТ КЛИЕНТОВ C
ГДЕ НЕ C.Адрес LIKE '*[0-9]*'
--WHERE NOT C.Address LIKE '*#*'
SELECT *
FROM CUSTOMERS C
WHERE NOT C.Address LIKE '%[0-9]%'
?
Это работает в Access, но не в SQL Server
SELECT *
FROM CUSTOMERS C
WHERE C.companyname LIKE '?a*'
%
Это работает в SQL Server, но не в Access, поскольку % интерпретируется иначе
SELECT DISTINCT Country 90 003 ОТ КЛИЕНТОВ
ГДЕ Страна NOT LIKE '[A-F]%'
Примеры
WHERE CustomerName LIKE 'D*' - все клиенты, названия которых начинаются с буквы D
WHERE CustomerName LIKE ''*H'
WHERE CustomerName LIKE '[A-C]' - все клиенты, имена которых начинаются с буквы A или буквы B
WHERE CustomerName LIKE '[!A-C]' - все клиенты, имена которых не начинаются с буквы A или буквы B
WHERE CustomerName LIKE '*ar*' - все клиенты, которые содержат два символа "ar".
WHERE CustomerName LIKE 'S?e' - все клиенты, которые
WHERE CustomerName LIKE '1#' - один заполнитель0002 -- Это работает в SQL Server, но не в Access, так как % интерпретируется по-разному НРАВИТСЯ ' [A-F]%'
—% в SQL Server означает любую строку из нуля или более символов
—% в Access означает ноль или более символов, но не работает
= — это работает в SQL Server, но не в Access
SELECT *
FROM CUSTOMERS C
WHERE C.companyname LIKE 'a_'
=—_ в SQL Server означает любой один символ
—_ в Access означает один символ, но не работает
= — это работает в Access, но не в SQL Server
SELECT *
FROM CUSTOMERS C
WHERE C.companyname LIKE 'a*'
—* в SQL Server ничего не значит
—* in Доступ означает ноль или более символов
= — это работает в Access, но не в SQL Server
SELECT *
FROM CUSTOMERS C
WHERE NOT C.Address LIKE '*[0-9]*'
WHERE NOT C. Address LIKE '*#*'
—# в Access означает однозначный символ 0-9
SELECT *
FROM CUSTOMERS C
WHERE NOT C.Address LIKE '%[0-9]%'
—# в SQL Server делает ничего не значит — вы можете использовать % и [0-9] для представления одного и того же
= — это работает в Access, но не в SQL Server
SELECT *
FROM CUSTOMERS C
WHERE C.companyname LIKE '?a*'
—? в SQL Server ничего не значит
—Это работает в SQL Server, но не в Access, поскольку % интерпретируется по-разному
SELECT DISTINCT Country
FROM CUSTOMERS
WHERE Country NOT LIKE '[A-F]%'
— % в SQL Server означает любую строку из нуля или более символов
—% в Access означает ноль или более символов, но не работает.
© 2023 Better Solutions Limited. Все права защищены. © 2023 Better Solutions LimitedTopPrevNext
Оператор VBA Like — использование подстановочных знаков в условных операторах
Автор Tom (AnalystCave)
Вот простой пример использования оператора Like:
Dim val As String: val = "Dog and Cat" Если val Нравится "*Собака*" Тогда Debug.Print "Найдена собака" Конец, если 'Результат: "Найдена собака"
Оператор Like — это более простая альтернатива регулярному выражению VBA, которая позволяет искать практически любой шаблон в строке и находить совпадения.
Если вы хотите не только проверить, содержит ли строка подстроку, но и вернуть позицию совпадения, лучше всего попробовать использовать функцию VBA InStr.
Оператор VBA Like
Оператор Like VBA — это логический оператор, возвращающий значение True, если строка соответствует определенному строковому шаблону.
Debug.Print "Dog and Cat" Like "*Dog*" 'Результат: True Debug.Print "Dog and Cat" Like "*Cow*" 'Результат: False
VBA Like также позволяет использовать следующие подстановочные знаки для замены определенных строк или символов:
Подстановочный знак | Описание |
---|---|
* | соответствует любому количеству символов |
? | соответствует любому 1 символу |
[ ] | соответствует любому 1 символу, указанному в скобках |
– | соответствует любому диапазону символов, например. [a-z] соответствует любой не заглавной 1 букве алфавита | # | соответствует любому цифровому символу |
Оператор Like не чувствителен к регистру! Если вам нужно сопоставление верхнего и нижнего регистра, используйте вместо этого функцию VBA InStr
Вот и все. Легко, верно? Давайте рассмотрим несколько примеров. ..
Примеры оператора Like в VBA
Давайте теперь посмотрим на пару примеров, которые хорошо показывают все возможности оператора Like:
Сопоставление с буквами
Если "Животное" как "[A-Z]*", то Debug.Print "Совпадение: строка, начинающаяся с заглавной буквы!" Конец, если
Соответствие числам
Если "Мой номер дома 22" вроде "*##", то Debug.Print "Совпадение: строка содержит двузначное число" Конец, если
Сопоставление телефонного номера с тире или точками
Debug.Print "123-345-678" Like "###[-.]###[-.]###" 'Результат: True
Совпадение определенной строки с другой строкой
Debug.Print "fewfwfewfwefdogfefweff" Like "*dog*" 'Результат: True
Как вы можете видеть в первой строке, мы используем оператор Like так же, как и другие операторы сравнения (=, >, ). Оператор Like позволяет проверить, соответствует ли строка слева от оператора выражению Like справа.