在字符串比较中使用通配符
内置模式匹配提供了一个功能丰富的工具用于比较字符串。下表显示可以与 Like 运算符一起使用的通配符以及它们匹配的数字或字符串的数目。
模式中的字符 |
表达式中的匹配 |
? 或 _(下划线) |
任意单字符 |
* 或 % |
零个或多个字符 |
# |
任意一位数字 (0 - 9) |
[字符列表] |
字符列表中的任意单字符 |
[!字符列表] |
不在字符列表中的任意单字符 |
可以使用括在方括号 ([ ]) 中的一个字符或一组字符(字符列表)来匹配表达式中的任意单字符,并且字符列表可以包括 ANSI 字符集 中的几乎所有字符(包括数字)。只有在用括号括起的情况下,才能使用左方括号 ([ )、问号 (?)、数字符号 (#) 和星号 (*) 等特殊字符来直接匹配它们自身。不能使用组中的右方括号 ( ]) 来匹配其自身,但可以在组外部使用右方括号作为单个字符。
除了用方括号括起的简单字符列表外,字符列表还可以通过用连字符 (-) 分隔范围的上限和下限来指定字符范围。例如,如果在模式中使用 [A-Z],当表达式中的相应字符位置包含范围 A 到 Z 中的任意大写字母时,则生成一个匹配。您可以在方括号中包括多个范围,且无需分隔各个范围。例如,[a-zA-Z0-9] 匹配任意字母数字字符。
请务必注意,ANSI SQL 中的通配符 (%) 和 (_) 只能在 Microsoft Access 数据库引擎和 Access OLE DB Provider 中使用。如果通过 Access 或 DAO 使用,它们将被视为文字。
模式匹配的其他重要规则包括:
✍ | 字符列表开头的感叹号 (!) 表示如果表达式中发现除字符列表中字符以外的任何字符,将生成一个匹配。在方括号外面使用时,感叹号匹配其自身。 |
✍ | 您可以在字符列表的开头(如果使用了感叹号,则在感叹号之后)或结尾使用连字符 (-) 来匹配连字符自身。在任何其他位置,连字符标识某一范围的 ANSI 字符。 |
✍ | 指定某一范围的字符时,字符必须以升序(A-Z 或 0-100)显示。[A-Z] 是有效模式,而 [Z-A] 是无效模式。 |
✍ | 字符序列 [ ] 将被忽略;它将被视为零长度字符串 ("")。 |