names=Split(session("city"),"|")
i=0
set rs=server.createobject("adodb.recordset") 
sql="select  * from qizu where sf like '%"&session("sf")&"%' and recycle=1 and("
for each name in names
sql=sql+"City like '%"&names(i)&"%' or "
i=i+1
sql=left(sql,len(sql)-4) &") order by id desc"

解决方案 »

  1.   

    zjcxc(邹建)老师,久闻你的SQL技术高深,果然利害.sql=left(sql,len(sql)-4) &"你是最后那生成的or 去掉了吗?我试一下~。首先谢谢您的帮助!
      

  2.   

    按邹建老师的方法,我试了一下,但ASP页面执行错误,我总感觉括号间没有处理好!
    我又改了一下代码,把那去了or的条件先变成变量hao但再括号中我又不知道如何放hao这个变量,再请求邹建老师。
    <% 
    names=Split(session("city"),"|")
    i=0
    for each name in names
    hao=hao&"City like '%"&names(i)&"%' or "
    i=i+1
    next
    hao=left(hao,len(hao)-4)
    set rs=server.createobject("adodb.recordset") 
    if not isempty(request("page")) then   
    pagecount=cint(request("page"))   
    else   
    pagecount=1   
    end if
    sql="select  * from qyhy_1798 where sf like '%"&session("sf")&"%' and recycle=1 and ( hao )"
    sql=sql &"order by id desc"我这个是一个分页程序
      

  3.   

    names=Split(session("city"),"|")
    i=0
    set rs=server.createobject("adodb.recordset") 
    sql="select  * from qizu where sf like '%"&session("sf")&"%' and recycle=1 and("
    for each name in names
    sql=sql+"City like '%"&names(i)&"%' or "
    i=i+1
    next
    sql=left(sql,len(sql)-4) &") order by id desc"我这样处理程序会出现错误!
      

  4.   

    你把拼出的SQL语句帖出来看看.
      

  5.   

    真对不起按邹建老师的方法,调试成功了!sql="select  * from qyhy_1798 where sf like '%"&session("sf")&"%' and recycle=1 and("
                  for each name in names
                  sql=sql+"City like '%"&names(i)&"%' or "
                  i=i+1
                  next
                  sql=left(sql,len(sql)-4) &") order by id desc"
      

  6.   

    邹建老师,还想问您两个问题1.像我按上面那个设计sql语句会不会影响查询速度.2.sql="select  * from qyhy_1798 where sf like '%"&session("sf")&"%' and recycle=1 and ( 如果我要放一个hao变量到这里这个应如何写 )"
      

  7.   

    1. like 的效率不高,这是肯定的,但你的查询要求如此,也没有办法可改进2.不明白你的意思.
      

  8.   

    两个方法
    1、如果你不用like + 通配符的话
    可以这样
    a = repleace(session("city"),"|",",") '将“|”替换成“,”
    select * from qizu  where sf like '%广东%' and recycle=1 and city in("&a&")2、有通配符的话参照楼上的我建议可以这样修改
    sql="select  * from qizu where sf like '%"&session("sf")&"%' and recycle=1 and(1=1"
    for each name in names
         sql = sql & " or City like '%"&names(i)&"%'"
         i   = i + 1
    next
    sql=sql &") order by id desc"修改的目的可以避免最后的去掉"or"
    不知道如何!
      

  9.   

    2、有通配符的话参照楼上的我建议可以这样修改
    sql="select  * from qizu where sf like '%"&session("sf")&"%' and recycle=1 and(1=1"
    for each name in names
         sql = sql & " or City like '%"&names(i)&"%'"
         i   = i + 1
    next
    sql=sql &") order by id desc"修改的目的可以避免最后的去掉"or"
    这样好像不行吧!
      

  10.   

    恩,楼上说的对,有时候必须这样做,在()中加上1=1,这样可以避免names(i)中没有值时出现sql错误!