oracle 判断varchar2类型是不是为空''  ,用什么判断符VV_LIST:='DSSSFDFDSFDS';
IF(VV_LIST <>'')THEN
             DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP');
  ELSE
             DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB');
  END IF;结果却打印了BBBBBBBBBBBBBBBBBBBBBBBB

解决方案 »

  1.   

    is null
    ''和null不一样的
      

  2.   

    不过你这个应该是输出pppp的啊
      

  3.   

    改为:VV_LIST:='DSSSFDFDSFDS'; 
    IF(VV_LIST IS NULL)THEN 
            DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB');          
      ELSE 
            DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP');    
      END IF; 
      

  4.   

    IS NULL 
    IS NOT NULL可以赋值=NULL,
    但在where条件中只能是IS (NOT)NULL
      

  5.   


    我说的'' 和非''的判断,不包括NULL
      

  6.   


    条件判断是否为空,不能用=NULL,只能IS NULL OR IS NOT NULL OR NOT IS NULL
    可以赋值=NULL
      

  7.   

    你如果只是判断'',可以trim后,用length取长度
    VV_LIST:='DSSSFDFDSFDS'; 
    IF length(trim(VV_LIST)) > 0 THEN 
       DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP');      
    ELSE 
       DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB');      
    END IF; 
      

  8.   

        IF ('' IS NULL) THEN
                dbms_output.put_line(''''' is null');
        END IF;
    输出:'' is null这说明,在oracle pl/sql里,把''当成null处理了
      

  9.   

    在''里面加个空格,' '就不是null了
      

  10.   

    ''和null 是两个不同的概念
      

  11.   

    Oracle中的空应该用的是null,非空就是not null
    for example:SQL> set serveroutput on
    SQL> declare
      2  str varchar(20):='helloworld';
      3  begin
      4  if str<>'' then
      5  dbms_output.put_line('is not null');
      6  else 
      7  dbms_output.put_line('is null');
      8  end if;
      9  end;
     10  /
    is nullPL/SQL procedure successfully completed.
    SQL> set serveroutput on
    SQL> declare
      2  str varchar(20):='helloworld';
      3  begin
      4  if str is not null then
      5  dbms_output.put_line('is not null');
      6  else 
      7  dbms_output.put_line('is null');
      8  end if;
      9  end;
     10  /
    is not nullPL/SQL procedure successfully completed.
      

  12.   

    不管是IF还是WHERE判断用IS NULL,赋值用:=''或者:=NULL
      

  13.   

    oracle 判断varchar2类型是不是为空''  ,用什么判断符 VV_LIST:='DSSSFDFDSFDS'; 
    IF(VV_LIST <>'')THEN 
                DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP'); 
      ELSE 
                DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB'); 
      END IF; 结果却打印了BBBBBBBBBBBBBBBBBBBBBBBB这个一定输出的是 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
    因为''是null 
    任何非空变量和null比较的结果都是不成立的
    所以走else
      

  14.   

    VV_LIST:='DSSSFDFDSFDS'; 
    IF(VV_LIST IS NOT NULL)THEN 
                DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP'); 
      ELSE 
                DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB'); 
      END IF; 
      

  15.   

    ‘间加空格’SQL> declare
      2    vv_list char(100);
      3  begin
      4    VV_LIST := 'DSSSFDFDSFDS';
      5    IF (VV_LIST <> '') THEN
      6      DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP');
      7    ELSE
      8      DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB');
      9    END IF;
     10  end;
     11  /
     
    BBBBBBBBBBBBBBBBBBBBBBBB
     
    PL/SQL procedure successfully completed
    SQL> declare
      2    vv_list char(100);
      3  begin
      4    VV_LIST := 'DSSSFDFDSFDS';
      5    IF (VV_LIST <> ' ') THEN
      6      DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP');
      7    ELSE
      8      DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB');
      9    END IF;
     10  end;
     11  /
      

  16.   

    SQL> declare
      2    vv_list char(100);
      3  begin
      4    VV_LIST := 'DSSSFDFDSFDS';
      5    IF (VV_LIST <> ' ') THEN
      6      DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP');
      7    ELSE
      8      DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB');
      9    END IF;
     10  end;
     11  /
     
    PPPPPPPPPPPPPPPPP
     
    PL/SQL procedure successfully completed
      

  17.   

    呵呵,這個是在寫代碼的時候要常注意的點 
    最後寫成 is null is not null 
      

  18.   

    ''中间没有空格的话和null是一样的吧
    只有中间加了空格才不一样
      

  19.   

    VV_LIST:='DSSSFDFDSFDS'; 
    IF(VV_LIST <>' ')THEN 
                DBMS_OUTPUT.PUT_LINE('PPPPPPPPPPPPPPPPP'); 
      ELSE 
                DBMS_OUTPUT.PUT_LINE('BBBBBBBBBBBBBBBBBBBBBBBB'); 
      END IF;加个空格