Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1126|回复: 0

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

[复制链接]

该用户从未签到

发表于 2011-9-26 15:34:22 | 显示全部楼层 |阅读模式
我们都知道,在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 &quot[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

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

    使用道具 举报

    该用户从未签到

    发表于 2011-9-28 12:41:05 | 显示全部楼层
    不错路过  。。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-22 00:45 , Processed in 0.509807 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表