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

     我们都知道,在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*aaa,aBa,aBBBaaBC
 *ab*abc,AABB,XabaZb,bac
特殊字符a[*]aa*aaaa
多个字符ab*abcdefg,abccab,aab
单一字符a?aaaa,a3a,aBaaBBBa
单一数字a#aa0a,a1a,a2aaaa,a10a
字符范围[a-z]f,p,j2, &
范围之外[!a-z]9, &, %b,a
非数字[!0-9]A,a,&,~0, 1, 9
组合字a[!b-m]#An9,az0,a99abc,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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值