查询ACCESS时使用通配符来简化工作

2008/10/29 14:29:58 来源:互联网 【 】 浏览:17435次

     我们都知道,在SQL查询中可以使用百分号%来模糊查询; 但是,实际上JET-SQL支持好几种通配符, 这意外着,我们在查询ACCESS和SQL Server时可以更自由的定义模糊查询的方式,而不是单纯死板的只能使用%匹配任意个数的任意字符. 

 

   这些通配符一般老师不会讲,我们也很少注意. 使用得当会提高我们的工作效率,某些工作不再需要编码完成,简单一个SQL就能搞定! 当然,比起有名的正则表达式, 还是弱多了! 详细支持的通配符列如下(源自ACCESS在线帮助及<Microsoft Jet SQL参考>):

字符 说明 示例
* 与任何个数的字符匹配。在字符串中,它可以当作第一个或最后一个字符使用。 wh* 可以找到 what、white 和 why
? 与任何单个字母的字符匹配。 B?ll 可以找到 ball、bell 和 bill
[ ] 与方括号内任何单个字符匹配。 B[ae]ll 可以找到 ball 和 bell 但找不到 bill
! 匹配任何不在方括号之内的字符。 b[!ae]ll 可以找到 bill 和 bull 但找不到 ball 或 bell
- 与某个范围内的任一个字符匹配。必须按升序指定范围(A 到 Z,而不是 Z 到 A)。 b[a-c]d 可以找到 bad、bbd 和 bcd
# 与任何单个数字字符匹配。 1#3 可以找到 103、113、123

  

   在下面的例子里,会返回以字母 P 开头、而其后接着介于 A 到 F 之间的任何字母和三个数字的数据:

Like "P[A-F]###"

在下面的列表中说明如何使用 Like 运算符来测试不同样式的表达式。


符合的种类

样式
符合(返回 True ) 不符合(返回 False )
多个字符 a*a aa,aBa,aBBBa aBC
  *ab* abc,AABB,Xab aZb,bac
特殊字符 a[*]a a*a aaa
多个字符 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

  

    但实际使用中还有一点我们需要注意,上面的通配符是在ACCESS界面中支持的,即在ACCESS的查询界面或查找替换对话框中使用的,而Jet SQL使用的是另一套,也就是说在我们自己的工程中写SQL时需要使用下面这套通配符:

字符 说明 示例
% 与任何个数的字符匹配,在字符串中,它可以当作第一个或最后一个字符使用。 wh% 可以找到 what、white 和 why
_ 与任何单个字母的字符匹配。 B_ll 可以找到 ball、bell 和 bill
[ ] 与方括号内任何单个字符匹配。 B[ae]ll 可以找到 ball 和 bell 但找不到 bill
^ 匹配任何不在方括号之内的字符。 b[^ae]ll 可以找到 bill 和 bull 但找不到 ball 或 bell
- 与某个范围内的任一个字符匹配。必须按升序指定范围(A 到 Z,而不是 Z 到 A)。 b[a-c]d 可以找到 bad、bbd 和 bcd

   

    也许你和我一样(因为我经常用ACCESS自动生成SQL语句,修改后直接贴到代码的SQL里.),不喜欢在ACCESS中(指直接使用ACCESS程序来打开mdb文件)使用*来代替%以匹配多个字符,那么也有个解决办法:

   打开ACCESS的工具菜单 >> 选项子菜单 >> 表/查询 页面 >> SQL Server 兼容语法(Ansi 92) >> 勾选下面复选框"当前数据库";

   若想将这项"作为新数据库的默认设置", 那么你必须先在 高级 页面 的 默认文件格式 下拉菜单选择 "ACCESS 2002 - 2003".

   经过上面的设置,我们在ACCESS的查询界面写SQL就也可以用%来匹配多个字符了.

===================================

非注明转载的文章和blog在未特殊声明情况下一般为本人原创或整理,
原创文章版权归沙漠孤狐(lonefox)所有;转载文章版权归原作者所有;

http://blog.csdn.net/boythl

欢迎转载,但请注明出处,保留作者和版权信息。

===================================

  • 上一篇文章:什么是web 2.0 (3)
  • 下一篇文章:WEB服务器负载均衡问题的解决
    当前地址:https://dns2003.com:443/help/hlp_dtl.asp?nid=10000358
    更多帮助登录: http://www.dns2003.com/help
    业务请咨询E网时代客服部