case  when (NVl(to_char(DTFINISHDATE,'yyyy-mm-dd'),'')<>'') 
 then 0 else 1 end LngStutas,这里的DTFINISHDATE是空日期型的.
用什么简单的方法就能判断,这是个空日期??

解决方案 »

  1.   

    连这样都不可以啊
    NVl(DTFINISHDATE,'2999-12-31')oracle真不会搞,要是Sqlserver就简单了
      

  2.   

    你的意思是空的话就为1,非空的话就为0吧?
    这样简单处理一下就行了:
    select decode(DTFINISHDATE,null,1,0) from tab;
      

  3.   

    select decode(DTFINISHDATE,null,1,0) from tab;
      

  4.   

    for example:
    SQL> declare
      2    is_date date;
      3    check_date date :=to_date('29990101','yyyymmdd');
      4  begin
      5    if nvl(is_date,check_date) = check_date then
      6       DBMS_OUTPUT.PUT_LINE('date is null!');
      7    elsif nvl(is_date,check_date) <> check_date then
      8       DBMS_OUTPUT.PUT_LINE('date is not null!');
      9    end if ;
     10  
     11  end;
     12  /date is null!
      

  5.   

    NVl(DTFINISHDATE,TO_DATE('2999-12-31','YYYY-MM-DD'))
      

  6.   

    使用NVL2(Expression1,Expression2,Expression3)---Expression1为空就取三,不是NULL就返回二
      

  7.   

    maaw(maaw) 正解!  xiaoxiao1984(笨猫儿) 也对.
      

  8.   

    用NVL和NVL2都行,查一下SQL Reference。
      

  9.   

    DTFINISHDATE is not null