select  *  from table  where A ='B';
select  *  from table  where 1=1;
将上面两条SQL语句合成一条,当B有值是A='B'条件有用,当B没有值是条件不起作用。

解决方案 »

  1.   

    是同一个表的,你的条件不起作用
    结果相当于:select * from table如果不同表:
    select  *  from tableA  where A ='B'
    union all
    select  *  from tableB  ; 
      

  2.   

    B 有没有如果可以在程序里面判断的话
    可以用 拼sql 写
      

  3.   

    select  *  from table  where A like nvl('B','%'); 
      

  4.   

    select  *  from tableB  where SUBJECTCODE like nvl('aa','%'); 
    在oracle9i测试是可行的
      

  5.   

    其实我想实现的是 
    select  column1,column2 
                   from table  t
                           where t.time 
                             between      to_date(parameter1, 'yyyy-mm-dd hh24:mi:ss') and
                                          to_date(parameter2, 'yyyy-mm-dd hh24:mi:ss') 
                        其中parameter1,parameter2 是从外部传入的 如果有值,则按照传入的时间范围查询,
                        如果没有值则查询所有包括时间为空的。
      

  6.   

    SELECT column1, column2
      FROM table t
     WHERE t.TIME BETWEEN NVL (TO_DATE (parameter1, 'yyyy-mm-dd hh24:mi:ss'),
                               t.TIME
                              )
                      AND NVL (TO_DATE (parameter2, 'yyyy-mm-dd hh24:mi:ss'),
                               t.TIME
                              )
      

  7.   


    SELECT column1, column2
      FROM table t
     WHERE t.TIME BETWEEN NVL(TO_DATE (parameter1, 'yyyy-mm-dd hh24:mi:ss'),t.TIME)
                      AND NVL(TO_DATE (parameter2, 'yyyy-mm-dd hh24:mi:ss'),t.TIME)
      

  8.   

    SELECT column1, column2
      FROM table t
     WHERE t.TIME BETWEEN NVL (TO_DATE (parameter1, 'yyyy-mm-dd hh24:mi:ss'),
                               t.TIME
                              )
                      AND NVL (TO_DATE (parameter2, 'yyyy-mm-dd hh24:mi:ss'),
                               t.TIME
                              )
    你这样必须保证数据库里面t.time不为空
    但是如果数据库里面存的时间为空的话,就只能捞到time不为空的。