注册 登录
编程论坛 ASP技术论坛

asp多字段查询语句“或”“和”

hebss 发布于 2010-10-25 12:06, 985 次点击
表DD,字段1 sheng,字段2 shi,字段3 id,查询关键字 key,查询条件:可能包含sheng和shi,或者只包含sheng或shi,比如:sheng=河北,shi=石家庄,查询关键字为:河北石家庄,或河北,或石家庄,请问这样的查询语句该怎么写,
sheng=河北或山东或河南等等
shi=石家庄或衡水或济南或郑州等等
关键字设为“Key”
if sql_filter(Trim(Request.Form("key")))="" and key="" then
 errinfo="<li>请输入搜索关键字!"
 call showError()
else
 if (not sql_filter(Trim(Request.Form("key")))="") and key="" then
  Response.Redirect "?key="&Trim(Request.Form("key"))
  Response.Flush
 end if
end if

sql = "Select * from [DD] where  shi like '%"&key&"%' or  sheng like '%"&key&"%'"
set rs=server.CreateObject("adodb.recordset")
 rs.open sql,conn,1,1

if rs.eof or rs.bof then
 rs.close
 set rs=nothing
 errinfo="在<font color=red>"&key&"</font>没有找到<br><a href=so.asp?act=s>请重新搜索</a>。"
 call showError()
end if
数据库:[local]1[/local]
现在的情况是只能分开搜,比如:河北 或石家庄 如果换成   
sql = "select  *  from shop_nclass where '"&key&"' like '%' + province + '%' + city + '%'"
只能合到一起搜了,比如:河北石家庄
5 回复
#2
hebss2010-10-25 13:33
改正一下:换成
sql = "select  *  from shop_nclass where '"&key&"' like '%' + sheng + '%' + shi+ '%'"
只能合到一起搜了,比如:河北石家庄,分开搜河北或石家庄就不能用了
#3
hams2010-10-25 14:38
key是个字段名吧,有必要加引号么?
#4
hams2010-10-25 14:42
sheng="河北"
shi="石家庄"
'add为地址字段
sql = "select  *  from shop_nclass where add like '"&sheng&"' or add like '"&shi&"' or add like '"&sheng&shi&"'"

#5
gupiao1752010-10-25 15:01
请问楼主,你想实现什么功能。像百度那样允许中间空格吗? 河北 石家庄  是这样吗?

如果是,那么你可以常识分割法:代码如下:
str="河北 石家庄"
arr=split(str,&nbsp)或arr=split(str," ");'依据判断可以一个空格也可以多个!
sql = "Select * from [DD] where  shi like '%"&arr(1)&"%' or  sheng like '%"&arr(0)&"%'"
类似这样操作试试!
#6
hebss2010-10-25 16:28
已经解决了,我是在百度知道里找人帮忙解决了,
把红色代码换成 sql = "select * from [DD] where sheng+shi like '%" & keyword & "%'"
谢谢两位版主的帮助,另key为关键词,我要的结果是:搜河北省或河北省石家庄或石家庄,都能搜到,没有考虑到空格的问题。
1