是写一个查询语句:a,b,c,d,e这5个是查询条件
用户可能只输入其中的几个条件
那怎么来写这个查询语句
先谢!!!

解决方案 »

  1.   

    第一次用Oracle
    所以不知道怎么弄
    你给我写一下吧
      

  2.   

    程序里用查询条件拼接或者
    程序里经常是这样写:
    SELECT * FROM EMP E
    WHERE E.EMPNO=DECODE(&EMPNO,'NONE',E.EMPNO,&EMPNO)
    没有传入值的时候,程序默认为'NONE'上面那种事我常用的,下面的也可
    SELECT * FROM EMP E
    WHERE E.EMPNO=NVL2(&EMPNO,&EMPNO,E.EMPNO)
      

  3.   

    给楼主一个思路 如果是在代码中处理的时候可以这样写
    String sql = "select * from ‘标明’ where ";
       if(!“”.equale(a)){
       sql+=" a=a ";
    }
          if(!“”.equale(b)){
       sql+=" b=b ";
    }
         大概就是这个意思了,只要条件存在 就拼接在sql语句后边。如果不存在就不加,
      

  4.   

    你给我说一下decode()这里面的几个参数是什么意思
    没有看明白
      

  5.   

    WHERE E.EMPNO=DECODE(&EMPNO,'NONE',E.EMPNO,&EMPNO)
    EMPNO的你程序传给SQL的外部变量,可能这个变量有值,或者没有值,
    有值的时候就执行传入的值进行查询,没有值的时候你赋予这个变量默认值(举例为'NONE'),传入NONE ,这个时候,还是用本条记录的值进行查询,相当于此过滤条件无效.....
      

  6.   


    你给我说一下decode()这里面的几个参数是什么意思decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
      

  7.   

    decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)条件=值1,decode的返回值为返回值1
    条件=值2,decode的返回值为返回值2
           :
    条件=值n,decode的返回值为返回值n条件不等于任何给定的值,返回缺省值
      

  8.   

    应该是一个已经将所有条件拼接好的sql送到数据库进行查询吧。
      

  9.   

    decode函数就相当于if语句
    if 条件 = 值1 then
      返回 返回值1;
    elsif 条件 = 值2 then
      返回 返回值2;
    ...
    elsif 条件 = 值n then
       返回 返回值n;
    else
       返回 缺省值;
    end if;
      

  10.   

    用 case when then  end也不错。。如果写完了。。可以给我优化优化哈哈
      

  11.   


    以前一直用if then end if 这样  如果是空值用你这样的方法好象不错,如果我这个empno为-1时不做条件,可以用的上DECODE这个函数吗.