Like access vba: Оператор Like (Microsoft Access SQL)
Содержание
Оператор Like (Microsoft Access SQL)
Twitter
LinkedIn
Facebook
Адрес электронной почты
-
Статья -
-
Область применения: Access 2013 | Access 2016
Сравнивает строковое выражение с шаблоном в выражении SQL.
Синтаксис
выражение, как «pattern«
Синтаксис оператора Like состоит из следующих частей:
Part | Описание |
---|---|
выражение | Выражение SQL, используемое в предложении WHERE. |
pattern | Строковый или символьный строковый литерал, с которым сравнивается выражение . |
Используйте оператор Like , чтобы найти значения в поле, соответствующее указанному шаблону. Для шаблона можно указать полное значение (например, Like "Smith"
), или использовать подстановочные знаки для поиска диапазона значений (например, ), или использовать подстановочные знаки для поиска диапазона значений (например, Like "Sm*")
.
В выражении можно использовать оператор Like для сравнения значения поля со строковым выражением. Например, если ввести Like "C*"
в SQL-запросе, запрос вернет все значения полей, начинающиеся с буквы C. В запросе параметров можно запросить у пользователя шаблон для поиска.
В следующем примере возвращаются данные, начинающиеся с буквы P, за которой следует любая буква между A и F и три цифры:
Like "P[A-F]###"
В следующей таблице показано, как использовать like для тестирования выражений для различных шаблонов.
Тип соответствия | Pattern | Match (возвращает значение True) | Нет совпадения (возвращает значение False) |
---|---|---|---|
Несколько символов | a*a | aa, aBa, aBBBa | Abc |
Ab | abc, AABB, Xab | aZb, bac | |
Специальный символ | a[*]a | a*a | Ааа |
Несколько символов | 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.
Sub LikeX() Dim dbs As Database, rst As Recordset ' Modify this line to include the path to Northwind ' on your computer. Set dbs = OpenDatabase("Northwind.mdb") ' Return a list of employees whose names begin with ' the letters A through D. Set rst = dbs.OpenRecordset("SELECT LastName," _ & " FirstName FROM Employees" _ & " WHERE LastName Like '[A-D]*';") ' Populate the Recordset. rst.MoveLast ' Call EnumFields to print the contents of the ' Recordset. Pass the Recordset object and desired ' field width. EnumFields rst, 15 dbs.Close End Sub
См. также
- Форум для разработчиков Access
- Помощь при работе с Access на support.office.com
- Форумы Access на UtterAccess
- Справочный центр (FMS) для разработки и VBA программирования для Access
- Публикации по Access на StackOverflow
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Оператор Like | Microsoft Learn
-
Статья -
-
Используется для сравнения двух строк.
Синтаксис
Результат = Шаблон stringLike
Синтаксис оператора Like состоит из следующих частей:
Part | Описание |
---|---|
result | Обязательный элемент; любая числовая переменная. |
строка | Обязательный элемент; любое строковое выражение. |
pattern | Обязательный элемент; любое строковое выражение, соответствующее соглашениям о сопоставлении шаблонов, описанным в разделе «Замечания». |
Если аргумент string соответствует аргументу pattern, значением result будет являться True; если не соответствует — значением result будет являться False. Если string либо pattern имеет значение Null, result также будет иметь значение Null.
Поведение оператора Like зависит от оператора Option Compare. Методом по умолчанию для сравнения строк для каждого модуля является Option Compare Binary.
Метод Option Compare Binary выдает результат сравнения строк на основе порядка сортировки, выводимого из внутреннего двоичного представления знаков. Порядок сортировки определяется кодовой страницей.
В следующем примере показан типичный бинарный порядок сортировки:
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Метод Option Compare Text выдает результат сравнения строк на основе порядка сортировки текста без учета регистра букв, определяемого языковым стандартом системы. Сортировка тех же знаков с использованием метода Option Compare Text дает следующий порядок сортировки:
(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)
Встроенное сопоставление шаблона предоставляет универсальное средство для сравнения строк. Возможности сопоставления шаблона позволяют использовать подстановочные знаки, списки знаков или диапазоны знаков в любой комбинации, чтобы сопоставить строки. В следующей таблице представлены знаки, разрешенные для использования в аргументе pattern, и объясняется, чему они соответствуют:
Знаки в pattern | Сопоставление в string |
---|---|
? | Любой отдельный знак. |
* | Ноль или больше знаков. |
# | Любая однозначная цифра (0–9). |
[ charlist ] | Любой отдельный знак, представленный в charlist. |
[ !charlist ] | Любой отдельный знак, не представленный в charlist. |
Группа из одного или нескольких символов ( 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. При использовании вне квадратных скобок восклицательный знак сопоставляется самому себе.
- Дефис (—) может отображаться в начале (но после восклицательного знака, если он используется) или в конце charlist для сопоставления самому себе. На любой другой позиции дефис используется для указания диапазона знаков.
- При задании диапазона знаков они должны отображаться по возрастающему порядку сортировки (от наименьшего к наибольшему).
[A-Z]
является допустимым шаблоном, но[Z-A]
не является. - Последовательность
[]
символов считается строкой нулевой длины («»).
В некоторых языках имеются специальные знаки в алфавите, представляющие два отдельных знака. Например, в нескольких языках используется знак «æ» для представления знаков «a» и «e», когда они отображаются вместе. Оператор Like распознает, что такой отдельный специальный знак и соответствующие два отдельных знака являются эквивалентными.
Когда языки, в которых используются специальные знаки, указываются в языковых настройках системы, отдельный специальный знак в аргументе pattern либо в аргументе string сопоставляется с эквивалентной 2-знаковой последовательностью в другой строке. Аналогичным образом отдельный специальный знак в аргументе pattern, заключенный в квадратные скобки (указанный отдельно, в списке или в диапазоне), сопоставляется с эквивалентной 2-знаковой последовательностью в string.
Пример
В этом примере оператор Like используется для сравнения строки с шаблоном.
Dim MyCheck MyCheck = "aBBBa" Like "a*a" ' Returns True. MyCheck = "F" Like "[A-Z]" ' Returns True. MyCheck = "F" Like "[!A-Z]" ' Returns False. MyCheck = "a2a" Like "a#a" ' Returns True. MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Returns True. MyCheck = "BAT123khg" Like "B?T*" ' Returns True. MyCheck = "CAT123khg" Like "B?T*" ' Returns False. MyCheck = "ab" Like "a*b" ' Returns True. MyCheck = "a*b" Like "a [*]b" ' Returns False. MyCheck = "axxxxxb" Like "a [*]b" ' Returns False. MyCheck = "a [xyz" Like "a [[]*" ' Returns True. MyCheck = "a [xyz" Like "a [*" ' Throws Error 93 (invalid pattern string).
См. также
- Сводка операторов
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Нравится оператор — служба поддержки Майкрософт
Access для Microsoft 365 Access 2021 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Дополнительно…Меньше
Сравнивает строковое выражение с шаблоном в выражении SQL.
Синтаксис
выражение
Нравится « образец »
Синтаксис оператора Like состоит из следующих частей:
Деталь | Описание |
выражение | Выражение SQL, используемое в предложении WHERE. |
узор | Литерал строки или символьной строки, с которым сравнивается выражение . |
Замечания
Вы можете использовать оператор Like , чтобы найти значения в поле, соответствующие заданному шаблону. Для шаблона можно указать полное значение (например, Like «Smith») или использовать подстановочные знаки для поиска диапазона значений (например, Like «Sm*»).
В выражении можно использовать Нравится 9Оператор 0012 для сравнения значения поля со строковым выражением. Например, если вы введете Like «C*» в запросе SQL, запрос вернет все значения полей, начинающиеся с буквы C. В запросе с параметрами вы можете запросить у пользователя шаблон для поиска.
В следующем примере возвращаются данные, начинающиеся с буквы P, за которой следует любая буква от A до F и три цифры:
Типа «P[A-F]###»
В следующей таблице показано, как можно использовать Аналогично для проверки выражений для различных шаблонов.
| | Матч | Нет соответствия |
Несколько символов | а*а | аа, аВа, аВВВа | аВС |
*аб* | абв, AABB, Xab | азб, бак | |
Специальный символ | а[*]а | а*а | ааа |
Несколько символов | аб* | абвдефг, абв | кабина , ааб |
Один символ | а?а | ааа, а3а, аба | аббба |
Одна цифра | а#а | а0а, а1а, а2а | ааа, а10а |
Диапазон символов | [а-я] | ф, р, к | 2 и |
Вне диапазона | [!а-я] | 9, &, % | б, а |
Не цифра | [!0-9] | А, а, &, ~ | 0, 1, 9 |
Комбинированный | а[!б-м]# | Ан9, аз0, а99 | абв, адж0 |
Как использовать, как в Access VBA
Я хочу отфильтровать форму на основе значения в поле со списком. Также я хочу иметь возможность фильтровать базу формы по значению, введенному в поле со списком. например, если я частично ввожу что-то в поле со списком, я хочу, чтобы форма отображала все записи в поле имени парня, которое содержит слово типов в поле со списком. Но я не могу заставить его работать.
Me.Filter = "[Парень] = '" & Я.Combo21 & "'" & " AND [guyID] = '" & Me.Combo36 & "'" Me.FilterOn = Истина
- vba
- мс-доступ
1
попробуйте это:
DoCmd.ApplyFilter , "guyName like '" & me.combo21 & "*'"
Вы поняли…
Не забудьте странную запятую. Предоставление строки критериев является вторым параметром.
1
Это также очень помогло мне, поэтому я решил добавить в него код для фильтров числовых, датовых и текстовых фильтров, каждый из которых зависит от использования одинарных, двойных кавычек или # для получения правильных критериев фильтра.
Настройка фильтра числового поля strFilter = "[DebitAccount] = " & Me. [Cbo-dbLedgerAcc] *** Настройка фильтра диапазона дат strsearchEntryDate = Формат(CDate(Me.[Txt-EntryDate]), "мм/дд/гггг") strFilter = "[DebitEntryDate] = #" & strsearchEntryDate & "# " strFilter = strFilter & "Или" & "[CreditEntryDate] = #" & strsearchEntryDate & "# " Настройка текстового фильтра Dim Searchstring как строка SearchString = Me.[txt-DetString] Вариант 1 Полное совпадение текста strFilter = "MatchDescription = '" & Me.[txt-DetString] & "'" Вариант 2. Соответствие слова/текста strFilter = "[MatchDescription] Like '*' & SearchString & "*'" *** Me.Filter = стрФильтр Me.FilterOn = Истина '** Полезно также упорядочивать результаты фильтрации Me.OrderBy = "Описание MatchDescription" Me.OrderByOn = Истина
В запросе:
Где [Фамилия] Like "*" & Forms!FormName!ControlName & "*" Форма должна быть открыта при выполнении запроса.
На форме фильтровать форму?
Код события AfterUpdate элемента управления:
Me.Filter = "[LastName] Like '*" & [ControlName] & "*'"
Me.