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

SQL Server ? односимвольный   * ноль или более символов   _   один символ %   ноль или более символов # одна цифра [0-9 ] [символы] Одиночный символ в группе символов [! символы ] 9′» эквивалентно LIKE «%_%»
Условия поиска могут содержать как числа, так и буквенные символы. «%» и «_» можно использовать в любой комбинации с литеральными символами. Если вам нужно сопоставить фактические символы «% » или «_», затем используйте параметр 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 справа.