我和几个同学在业余时间搞了一个同学录系统主要是用ASP和SQL语言实现各项功能,在查询这一步,有一项功能我们不知道如何用SOL语言编写,希望高手能指导一下。
      大体功能是这样:在查询页面有多个查询选项,用户选择部分选项点查询,系统返回符合要求的同学的全部信息。
      例如:在出生年月一栏写“1987”,在性别写“男”,家乡写“河北”,其余的选项写空。然后系统就将符合的条件的同学的所有信息返回。问题就在其余这些为空的选项上面,一直得不到理想的返回结果。不知如何处理,我们用过的方法有模糊查询和条件查询,鉴于编程水平有限一直无法如愿.
希望高手给出一个简洁高效的答案

解决方案 »

  1.   

    1、动态SQL,拼查询语句字符串然后执行;2、
    declare @date datetime,@sex varchar(2),@native varchar(10)select * from 表 where 出生年月=isnull(@date,出生年月) and 性别=isnull(@sex,性别) and ...
      

  2.   

    <script>
    //在页面处理
    var list
    list=""
    if (document.formess.age.value!="")
       list=list+" and age='"+document.formess.age.value+"'"
    if (document.formess.sex.value!="")
       list=list+" and sex='"+document.formess.sex.value+"'"
    if (document.formess.country.value!="")
       list=list+" and country like '%"+document.formess.sex.value+"%'"//模糊查询
    ......
    list="select * from peoplefile where 1=1"+list//list里面保存的就是你要的语句
    </script>
      

  3.   

    谢谢你的回复,我比较菜,希望能写的具体点。我再把问题说的清楚点,比如我已有的数据表里有 姓名(name) 性别(sex)  家乡(home)目前就读学校(NowSchool)这4项 ,然后在查询界面相应有4个选项
    如果都写了,那语句很好写。但是如果我只写了姓名和家乡,而性别和学校项为空,那语句需要特殊处理吗,如果需要的话要分多少情况?不需要的话,又为什么。呵呵,不好意思哈,本人菜的很。
      

  4.   

    怎么会为空呢? * 代表所有的查询. 下面拼写你的where 条件. <script>
    //在页面处理
    var list
    list=""
    if (document.formess.age.value!="")//如果为空下面就不执行. 这样就没有年纪的判断
       list=list+" and age='"+document.formess.age.value+"'"  
    if (document.formess.sex.value!="")
       list=list+" and sex='"+document.formess.sex.value+"'"
    if (document.formess.country.value!="")
       list=list+" and country like '%"+document.formess.sex.value+"%'"//模糊查询
    ......
    list="select * from peoplefile where 1=1"+list//list里面保存的就是你要的语句
    </script>