我做一个查询系统,查询条件是(某)年(某)月(某)日(某)人(某)地   
其中“(某)”都是下拉的选择菜单,其中有‘全部’这一项,选择具体的比较简单,比如说
2006年6月3日张三黑龙江 SQL语句如下:
select * from biaoming where year='2006' and month='6' and day='3' and ren='张三' and didian='黑龙江'
但是如果我想查2006年6月3日所有人黑龙江或者2006年全年张三任何地点,对于单个好查,但是我也不知道他哪个条件选全部,我怎么修改查询条件呀
select * from biaoming where year='2006' and month='*'.................我要问的问题就是,我不知道他具体哪个选全部,我的SQL语句应该怎么写呀,有什么字符能表示全部吗?
请指教,急!~!~!~!~!~!~!~!~!~!~!~!~!

解决方案 »

  1.   

    select * from biaoming where (year=:year or :year='') and (month=:month or :month='' ) and (day=:day or :day='') and (ren=:ren or :ren='') and (didian=:didian or :didian='')这样通过逻辑运算,当一个条件为空,则搜索该条件所有情况。即:year=''的时候,实际select的结果不会和year有关
      

  2.   

    用like '%' 的方式也可以。
      

  3.   

    select ...... where col1 like ?选择全部的时候赋值%就可以了。
      

  4.   

    选择全部的你不用在SQL语句+上这个条件啊,也就是当他选全部的时候这个条件就可以不加啊
    写SQL时判断下就可以了
      

  5.   

    1难道选全部的时候就直接给他=%值吗?
    2怎么做判断呀
    if year="全部" sql+=and year='2006'请兄弟门给我一个完整的答复,谢谢了,我很乱
      

  6.   

    没必要那么麻烦。就用我前面的sql代码。
    可以分析逻辑表达式
    (year=:year or :year='') and (month=:month or :month='' ) and (day=:day or :day='') and (ren=:ren or :ren='') and (didian=:didian or :didian='')
    当参数:year为''(即用户没有选中年份)的时候,(year=:year or :year='') 就恒为TRUE,这个子表达式结果就和year字段无关。那么和后面的and操作,就等价于(month=:month or :month='' ) and (day=:day or :day='') and (ren=:ren or :ren='') and (didian=:didian or :didian=''),这样就相当于不考虑年了。后面的推理一样