asp代码,access数据库,查询问题

jiufang98 2009-10-23 01:43:45
数据库表名为:table1
其中一个字段名为:name1

name1 中内容可能是:你 好
注:“你好”这两个字中间的空格不能确定多少个

请问怎么才能当输入“你好”这两个字的时候,可以查询出含有“你 好”的记录呢

keyw="你好"
sql="select * from table1 where name1='"&keyw&"' order by id"


请问上面这句话怎么改才能正确查询出来呢??

注:这样写是报错的:sql="select * from table1 where replace(name1,' ','')='"&keyw&"' order by id"

...全文
228 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ai2015WER 2011-10-27
  • 打赏
  • 举报
回复
学习了
jiufang98 2009-10-23
  • 打赏
  • 举报
回复
算了,看来方法不多啊
还是用 number123456 的方法吧
变通一下就可以了

key="王刚"
rs.open sql,conn,1,1 '这样用“王刚”查询出来的结果可能包括“王文刚”
do while not rs.eof
if Instr(replace(rs("name1")," ",""),key)>0 then
'显示数据记录
end if
rs.movenext
loop

这样就可以把多余的记录屏蔽掉不显示了,
大家觉得这样有什么不好吗?
number123456 2009-10-23
  • 打赏
  • 举报
回复
你的数据是不是有很多条信息?如果信息量过大的话,可以试试ACC的查询,类似于SQL的视图
jiufang98 2009-10-23
  • 打赏
  • 举报
回复
我想要准确查询

例如:查询“王刚”
则查询到“王刚”、“王 刚”、“王刚文”、“吴王刚”即可,但是不要查询到“王文刚”之类的
床上等您 2009-10-23
  • 打赏
  • 举报
回复
应该是模糊查询
jixianhuhuan 2009-10-23
  • 打赏
  • 举报
回复
你是不是想要模糊查询啊,还是只想要去掉空格后的结果?
jiufang98 2009-10-23
  • 打赏
  • 举报
回复
SELECT * FROM aaa where replace(name1,' ','')='王刚'

这句话我执行到最好显示超时,反正是执行了很多遍,甚至机器重启后再执行,还是超时

不过 number123456 的方法可以查询到
只是 如果查询“王刚” 则 数据库中“王文刚”的记录也会查询出来!
weesay 2009-10-23
  • 打赏
  • 举报
回复
楼上正解 !
number123456 2009-10-23
  • 打赏
  • 举报
回复
SELECT * FROM aaa where replace(name1,' ','')='王刚'
这句SQL语句我在ACCESS中己经测试过是可以正常查询,也显示了你想要的结果
jiufang98 2009-10-23
  • 打赏
  • 举报
回复
哎,难道是我没讲明白?
不是多关键字复合查询!就是单关键字
例如:数据表 table1
字段名:id name1 address other
内容: 1 王刚 中国 无
2 李晓峰 中国 无
3 王 刚 中国 无
……………………

当用户输入 “王刚” 查询的时候,我想得到 1、3 这两条记录
注:这个内容是用户输入的,所以 第三条记录中“王 刚”中间的空格数不能确定是几个的

这下应该清楚了吧!
number123456 2009-10-23
  • 打赏
  • 举报
回复
sql="select * from table1 where replace(name1,' ','')='"&keyw&"' order by id"
你这么写报什么错?我刚试了ACC是支持replace
number123456 2009-10-23
  • 打赏
  • 举报
回复
key = "你好"
keys = "%"
for i = 0 to len(key)
keys = keys & mid(key,i,1) & "%"
next
sql="select * from table1 where name1 like '"&keys&"' order by id"
weesay 2009-10-23
  • 打赏
  • 举报
回复
sql = sql&" and name1 like '%"&aa(i)&"'%" 这句话后面应该加个 OR 前面的AND 也应该提到上面1=1 那里 麻烦就在这里 我昏了 你还清醒吧 .. 那就交给你去做吧 !
weesay 2009-10-23
  • 打赏
  • 举报
回复
不知楼主的意思是不是多关键字复合查询 。。
你可以先定义关键字输入方式 每个之间用 , 或者 | 分割 .. 然后你获取的时候 split 分割一下 !
aa = split(获取的值,"定义的分割符")
然后
sql="select * from table1 where 1=1"

for i=0 to UBound(aa)
sql = sql&" and name1 like '%"&aa(i)&"'%"
next

sql = sql&" order by..."

这样应该能实现你要的效果 但有些细节需要处理 ..你在仔细研究一下 !

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧