sql = "select * from XXX where 1 = 1"
if a条件成立 then
    sql = sql & "and" & "a字段条件语句"
end if
if b条件成立 then
    sql = sql & "and" & "b字段条件语句"
end if
if c条件成立 then
    sql = sql & "and" & "c字段条件语句"
end if
执行sql

解决方案 »

  1.   

    姓名(name)_________性别(sex)___________年龄(age)__________
    var strsqlwhere="";
    if(name.value!=""){
      if(strsqlwhere!="") strsqlwhere+=" and ";
      strsqlwhere+="nvc_name like '%"+name.value+"'%";
    }
    其它类似
      

  2.   

    where 1 = 1这种写法不提倡
    影响效率
      

  3.   

    梅雪香@hisoft 误解了我的意思了吧?
    where 1=1是什么意思?
      

  4.   

    where 1=1 就是搜索所有纪录。这个是为了后面写代码加单点,所以加上这个条件。
      

  5.   

    我设计了一种算法:
    把where后面的各个复合查询的条件义字符窜的形式存储在数组中,到最后就根据用户的选择来在数组中选取相应的条件再组合成一个完整的sql语句。大家说这种方法怎么样呢?
      

  6.   

    姓名(name)_________性别(sex)___________年龄(age)__________rs=....
    sql = "select * from XXX where 1 = 1"
    if name<>"" then sql=sql+" name=Request.Form("name") "
    if sex<>"" then sql=sql+" name=Request.Form("sex") "
    if age<>"" then sql=sql+" name=Request.Form("age") "
    rs.Open  sql,conn,1,1
      

  7.   

    zhaoxiaoyang(梅雪香@hisoft)where 1 = 1这种写法不提倡
    影响效率
    ///////////////////////////////////多谢指正!
      
     
      

  8.   

    where 1=1 and.......
    这种写法在执行的时候每条记录要比较一次1=1
    有一万条记录就比较一万次,再快也需要时间啊