Used to compare two strings.
result = string Like pattern
The Like operator syntax has these parts:
Part |
Description |
result |
Any numeric variable. |
string |
Any string expression. |
pattern |
Any string expression conforming to the pattern-matching conventions described in Remarks. |
If string matches pattern, result is True; if there is no match, result is False; and if either string or pattern is Null, result is also Null.
The behavior of the Like operator depends on the Option Compare statement. Unless otherwise specified, the default string-comparison method for each module is Option Compare Binary.
Option Compare Binary results in string comparisons based on a sort order derived from the internal binary representations of the characters. Sort order is determined by the code page. In the following example, a typical binary sort order is shown:
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text results in string comparisons based on a case-insensitive textual sort order determined by your system’s locale. The same characters shown above, when sorted using Option Compare Text, produce the following text sort order:
(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)
Built-in pattern matching provides a versatile tool for string comparisons. The pattern-matching features allow you to use wildcard characters, character lists, or character ranges, in any combination, to match strings. The following table shows the characters allowed in pattern and what they match:
Character(s) in pattern |
Matches in string |
? |
Any single character. |
* |
Zero or more characters. |
# |
Any single digit (0 – 9). |
[charlist] |
Any single character in charlist. |
[!charlist] |
Any single character not in charlist. |
A group of one or more characters (charlist) enclosed in brackets ([ ]) can be used to match any single character in string and can include almost any character code, including digits.
Note The special characters left bracket ([), question mark (?), number sign (#), and asterisk (*) can be used to match themselves directly only by enclosing them in brackets. The right bracket (]) can’t be used within a group to match itself, but it can be used outside a group as an individual character.
In addition to a simple list of characters enclosed in brackets, charlist can specify a range of characters by using a hyphen (-) to separate the upper and lower bounds of the range. For example, [A-Z] in pattern results in a match if the corresponding character position in string contains any of the uppercase letters in the range A through Z. Multiple ranges are included within the brackets without any delimiters.
The meaning of a specified range depends on the character ordering valid at run time (as determined by Option Compare and the locale setting of the system the code is running on). Using the same example shown above with Option Compare Binary, the range [A–E] matches A, B and E. With Option Compare Text, [A–E] matches A, a, À, à, B, b, E, e. Note that it does not match Ê or ê because accented characters fall after unaccented characters in the sort order.
Other important rules for pattern matching include the following:
In some languages, there are special characters in the alphabet that actually represent two separate characters. For example, several languages use the character “æ” to represent the characters “a” and “e” when they appear together. The Like operator recognizes that the single special character and the two individual characters are equivalent.
When a language that uses one of these special characters is specified in the system locale settings, an occurrence of the single special character in either pattern or string matches the equivalent 2-character sequence in the other string. Similarly, a single special character in pattern enclosed in brackets (by itself, in a list, or in a range) matches the equivalent 2-character sequence in string.
Comparison Operators, InStr Function, Operator Precedence, Option Compare Statement, StrComp Function.
This example uses the Like operator to compare a string to a pattern.
MyCheck = "aBBBa" Like "a*a" ' Returns True.= "F" Like "[A-Z]" ' Returns True.= "F" Like "[!A-Z]" ' Returns False.= "a2a" Like "a#a" ' Returns True.= "aM5b" Like "a[L-P]#[!c-e]" ' Returns True.= "BAT123khg" Like "B?T*" ' Returns True.= "CAT123khg" Like "B?T*" ' Returns False.