简单的一个函数,仅仅涉及到空字符穿的比较,可结果不对,帮忙看看
create or replace function GET_DNZW(AZGID INTEGER, AYEAR varchar2) return varchar2 is
Result varchar2(20);
BEGIN
DECLARE
ACXNX varchar2(4) := ' ';
BEGIN
ACXNX := AYEAR;
IF ACXNX = ' ' THEN ACXNX := '2007 '; END IF;
RESULT := ACXNX;
return(RESULT);
END;
END GET_DNZW;
SELECT GET_DNZW(1, ' ') FROM DUAL 用这个语句调用,应该出来的是2007,可是结果为空字符串,我试了以下,这个if语句就是为false,不知道怎么原因。
------解决方案--------------------IF ACXNX = ' ' THEN ACXNX := '2007 '; END IF;
改成
IF ACXNX is null THEN ACXNX := '2007 '; END IF;
在Oracle里,没有空字符串,只有空值 NULL
NULL就是 ' ',这两者是等价的,是一样的
------解决方案--------------------oracle中对null的判断只能用is null 或 is not null,其余的都不行,就是用null=null都不可以。
------解决方案-------------------- ' '不等于null 这个需要注意的