有一个select语句:
select * from table1 where table1.字段1 = 外部参数但如果外部参数是数字0的话,上面的抽出条件就不使用;有没有什么办法把“外部参数是数字0的话,上面的抽出条件就不使用”这个条件放在SQL语句里一起实现
而不是分开来写不同情况下的SQL语句

解决方案 »

  1.   

    -- TRY IT ..
    SELECT *
      FROM TABLE1
     WHERE TABLE1.字段1 = DECODE(外部参数,0,TABLE1.字段1,外部参数);
      

  2.   

    select * from table1 where table1.字段1 = 外部参数 and 外部参数<>0;
      

  3.   

    SELECT *
      FROM TABLE1
     WHERE TABLE1.字段1 = DECODE(外部参数,0,TABLE1.字段1,外部参数);
    这个方法很好。
      

  4.   

    SELECT * 
      FROM TABLE1 
    WHERE TABLE1.字段1 = DECODE(外部参数,'%',TABLE1.字段1,外部参数); 
      

  5.   


    单引号里面的%代表什么字符?是要把比较的字符放在%后面呢?是不是这样写:
    SELECT * 
      FROM TABLE1 
    WHERE TABLE1.字段1 = DECODE(外部参数,'%0',TABLE1.字段1,外部参数); 
      

  6.   

    如果你是要模糊查询就要用LIKE了
    我这里%只是代表全部,没有过滤,有时候我们会用'00'之类的代替,总之是用过滤条件里不会出现的字符串这种比较方法,主要适用于用下拉菜单来传参数的,这种参数都是事先设置好的
      

  7.   

    楼主应该是指这个意思吧?select * from table1 where (外部参数 = 0 OR table1.字段1 = 外部参数)
      

  8.   

    不好意思,让你误解了,不是,我说的是以下意思:
    if 外部参数 = “0” 
    select * from table1else
    select * from table1 where table1.字段1 = 外部参数但是我想用一个SQL语句把两种情况都包括了,还有什么办法吗?(外部参数是字符型的)
      

  9.   


    select * from table1 where (外部参数 = 0 OR table1.字段1 = 外部参数) 
    就这个了
      

  10.   

    就用DECODE(外部参数,0,TABLE1.字段1,外部参数); 就可以了
      

  11.   

    一条SQL语句,可能实现起来有困难。当然也许有高手能解决,在这里和LZ讨论的问题是逻辑应该放在哪里的问题,如果在数据层外就实现这个是不是更简单呢,当然如果写个函数之类的实现起来也不麻烦。
      

  12.   

    这个很好,就剩下字符串的问题了,orcal自动识别不能解决吗?