日期:2014-05-17  浏览次数:20992 次

oracle 判断varchar2类型是不是为空'' ,用什么判断符
oracle 判断varchar2类型是不是为空'' ,用什么判断符

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

结果却打印了BBBBBBBBBBBBBBBBBBBBBBBB

------解决方案--------------------
is null
''和null不一样的
------解决方案--------------------
不过你这个应该是输出pppp的啊
------解决方案--------------------
改为:

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

------解决方案--------------------
探讨
IS NULL
IS NOT NULL

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

------解决方案--------------------
你如果只是判断'',可以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;
------解决方案--------------------
Oracle中的空应该用的是null,非空就是not null
for example:
SQL code

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 null

PL/SQL procedure successfully completed.

------解决方案--------------------
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