![](http://www.china-askpro.com/images/icon_q.gif) | 操作系统: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中的%改为*则报告内存溢出。第二句则可以执行,但无法找出记录。(NewStar) | | | ![](http://www.china-askpro.com/images/icon_a.gif) | 如果你用的是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 鲁卓的意见: 周东和chenhy说的都对。但周冬的答案只在asp中有效。chenhy的答案只在access中的查询有效。 此问题由Kurt回答。 附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, SQL查询, sql server, sql, query, select。 | | |
|