Access数据库的Like查询

来源:互联网 发布:chrome windows 编辑:程序博客网 时间:2024/04/28 08:55
原文网址:http://www.china-askpro.com/msg15/qa22.shtml

NewStar:
    操作系统:PNT4.0 SP5+IIS4+Access 97
    工具:ASP
    问题:我有一个客户档案数据库,有大概13000条数据,用ASP提取数据库记录的时候用
    select name, address, lxr, tel from khda where Name Like '%江华%'
    选出的记录为0条,但是实际上数据库中有这样的记录存在。如果用
    select name,address,lxr,tel from khda where Name Like '%江华%' And qy='武汉市'
    则可以找出正确的记录。如果按Access 97帮助中的写法把第一句SQL中的%改为*则报告内存溢出。第二句则可以执行,但无法找出记录。

回答:

    如果你用的是ADO,那么会出现这种问题,在《NT网络数据库速成--设计实例》(中国铁道出版社 1998)中提到Access 97不支持Like查询。我在一个Intranet中设计一个搜索引擎时也发现了这个问题,我当时是先取得当前字段的值后,再用VBScript提供的InStr函数判断要查找的是否包含在内。另,因为ACCESS 97的效率特别是对SQL语句执行效率较差,象你这么多的数据还是换用其他数据库较好。 
     
    周冬的意见:
    其实,ado 是支持的,只不过,like 语句中应该用2个%,如: select * from databasename where fieldname like '%%XX%%' 这样就可以得到正确的查询结果了。这个问题也同时困扰了我很久,现在有解了,和大家一起共享!:) 
     
    chenhy的意见:
    Access里like的通配符用法是这样:
    “?”表示任何单一字符; “*”表示零个或多个字符; “#”表示任何一个数字
    所以应该是:
    select * from databasename where fieldname like '*XX*' 
     
    szr、MAjie的意见:
    出现这样的具有模糊性质的查询我觉得应用VBScript提供的InStr函数比较好,具体语法请参照其函数的应用。如:select * from tab_name where instr(字段1,条件)=1

此问题由Kurt回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, SQL查询, sql server, sql, query, select