Q 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中的%改为*则报告内存溢出。第二句则可以执行,但无法找出记录。
A回答:
如果你用的是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。