内置模式匹配提供了一个功能丰富的工具用于比较字符串。下表显示可以与Like运算符一起使用的通配符以及它们匹配的数字或字符串的数目。




模式中的字符

表达式中的匹配

?或_(下划线)

任意单字符

*或%

零个或多个字符

#

任意一位数字(0-9)

[字符列表]

字符列表中的任意单字符

[!字符列表]

不在字符列表中的任意单字符



可以使用用方括号([])括起的一个字符或一组字符(字符列表)来匹配表达式中的任意单字符,并且字符列表可以包括ANSI字符集?(ANSI字符集:MicrosoftWindows使用的8位字符集,允许您使用键盘表示多达256个字符(0到255)。ASCII字符集是ANSI集的子集。)中的几乎所有字符(包括数字)。只有在用括号括起的情况下,才能使用左方括号([)、问号(?)、数字符号(#)和星号(*)等特殊字符来直接匹配它们自身。不能使用组中的右方括号(])来匹配其自身,但可以在组外部使用右方括号作为单个字符。

除了用方括号括起的简单字符列表外,字符列表还可以通过用连字符(-)分隔范围的上限和下限来指定字符范围。例如,如果在模式中使用[A-Z],当表达式中的相应字符位置包含范围A到Z中的任意大写字母时,则生成一个匹配。您可以在方括号中包括多个范围,且无需分隔各个范围。例如,[a-zA-Z0-9]匹配任意字母数字字符。

请务必注意,ANSISQL中的通配符(%)和(_)只能在MicrosoftAccess数据库引擎和MicrosoftOfficeAccess2007OLEDBProvider中使用。如果通过MicrosoftOfficeAccess2007或DAO使用,它们将被视为文字。

模式匹配的其他重要规则包括:

  • 字符列表开头的感叹号(!)表示如果表达式中发现除字符列表中字符以外的任何字符,将生成一个匹配。在方括号外面使用时,感叹号匹配其自身。
  • 您可以在字符列表的开头(如果使用了感叹号,则在感叹号之后)或结尾使用连字符(-)来匹配连字符自身。在任何其他位置,连字符标识某一范围的ANSI字符。
  • 指定某一范围的字符时,字符必须以升序(A-Z或0-100)显示。[A-Z]是有效模式,而[Z-A]是无效模式。
  • 字符序列[]被忽略;它被认为是零长度字符串?(零长度字符串:不含字符的字符串。可以使用零长度字符串来表明您知道该字段没有值。输入零长度字符串的方法是键入两个彼此之间没有空格的双引号("")。)("")。


转载于:https://blog.51cto.com/zhaojie/1306402