在java中ACCESS模糊查询出现的奇怪问题,使用%不行的解决方案。
2008-09-19 07:19
866 查看
在SQL Server中模糊查询通常是这样的Select * from userInfo where userName like '%a%'
但是在Access中用这条语句执行的时候竟然发现查不出结果,怎么可能呢?
后来google了下,发现问题如下:
要进行模糊查找,则必须使用通配符,ACCESS库的通配符和SQL SERVER的通配符不一样。
ACCESS库的通配符为:
* 与任何个数的字符匹配。
? 与任何单个字母的字符匹配
在SQL Server中的通配符为:
% 与任何个数的字符匹配
- 与单个字符匹配
但是又发现,java连接到Access数据库之后,用这样一条语句Select * from userInfo where userName like '*a*' (注意,这边按照上述通配符的要求将%修改为*了,在access查询分析器中可以)竟然搜索不到应该存在的N条记录,比较郁闷。怎么可能呢?明明直接在Access中执行的时候是有结果的呀!!!
后来又google了下,要在access上做改动,如下:
access工具菜单-->选项-->表/查询-->sql server 兼容语法(ANSI 92)
这样就可以了,不过这个时候注意了,要用%做通配符了,因为两种数据库使用的sql语言版本不同,默认access好像使用sql-89改成基于sql-92就可以了。
大家还有更好的方法,欢迎讨论。
但是在Access中用这条语句执行的时候竟然发现查不出结果,怎么可能呢?
后来google了下,发现问题如下:
要进行模糊查找,则必须使用通配符,ACCESS库的通配符和SQL SERVER的通配符不一样。
ACCESS库的通配符为:
* 与任何个数的字符匹配。
? 与任何单个字母的字符匹配
在SQL Server中的通配符为:
% 与任何个数的字符匹配
- 与单个字符匹配
但是又发现,java连接到Access数据库之后,用这样一条语句Select * from userInfo where userName like '*a*' (注意,这边按照上述通配符的要求将%修改为*了,在access查询分析器中可以)竟然搜索不到应该存在的N条记录,比较郁闷。怎么可能呢?明明直接在Access中执行的时候是有结果的呀!!!
后来又google了下,要在access上做改动,如下:
access工具菜单-->选项-->表/查询-->sql server 兼容语法(ANSI 92)
这样就可以了,不过这个时候注意了,要用%做通配符了,因为两种数据库使用的sql语言版本不同,默认access好像使用sql-89改成基于sql-92就可以了。
大家还有更好的方法,欢迎讨论。
相关文章推荐
- 在java中ACCESS模糊查询,使用%不行的解决方案。
- 关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题
- ACCESS模糊查询出现的变态问题,不知道该问题的希望注意,知道内幕的高手还望给小弟一个解释 Thanks
- 使用gedit打开grub.conf时出现的奇怪问题
- 网页客户端使用php访问mysql数据时出现NetworkError: 500 Internal Server Error问题的解决方案
- android中,使用ant多渠道打包时出现Perhaps JAVA_HOME does not point to the JDK问题的解决方法
- Unity2017版—使用Vuforia 6.2.10插件 出现问题的解决方案
- 初次使用ASIHttpRequest,出现EXC_BAD_ACCESS问题
- 在使用mysql条件in查询的时候出现查的条数变少的原因以及解决方案
- [JAVA]使用JDB调试时键盘输入被JDB占用的问题解决方案
- 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
- java工程项目里,在一个包里面,不能出现同名的类名,这问题是刚接触java才会遇到的,特别是新手一般都没有建立包,而是使用默认的,易出现同名的类名,导致eclipse提示错误
- Eclipse使用过程中出现java.lang.NoClassDefFoundError的解决方案
- Java的Object的equals和hashCode函数与集合类联合使用的问题解决方案
- “Oracle 9i/Oracle 10g” 查询 参数java.util.date 性能慢的问题和解决方案
- jdbc 连接数据库出现 密码错误的问题(java.sql.SQLException: Access denied for user 'root'@'localhost' (using passwo)
- Mysql在Linux下安装和使用过程中出现的问题及解决方案
- 数据库SQL中的分钟表示应该使用MI(非常重要的一个问题,以前一直认为和java中一样,用mm就可以表示);校对规则(查询时区分大小写)
- 模糊查询中出现的问题及解决方法
- 使用Ef查询出现的问题The cast to value type 'System.Boolean' failed because the materialized value is null.的解决方法