3. 空值操作符NVL
为解决以上两种情况,可以使用NVL操作符。
NVL是一个带有两个参数的函数,NVL(arg1,arg2)。如果第一个为NULL,则NVL函数就返回第二个参数。如下面语句中,当第一个参数arg为NULL时,函数返回1。
NVL(arg,1);
NVL函数可以进行嵌套。这样就可以从一组变量值中选择出一个非空值(NOT NULL)。例如有3个变量:A,B和C。你希望返回A。如果A为NULL,就返回B。如果B为NULL,就返回C。如果3个变量都为NULL,就返回0。这个表达式为:
NVL(A,NVL(B,NVL(C,0)));
在下面的代码中,当OTHER_NAME为NULL时,可用一个空字符串替代它。这样就能从布尔表达式中删除所有的空值。
Set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10) :=NULL;
BEGIN
IF
NOT (NVL(other_name,’ ‘) = ’JOHN’ OR NVL(other_name,’ ‘) = ‘SCOTT’)
THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
Dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;
以上代码块的输出结果是:CONDITION_TRUE
为解决以上两种情况,可以使用NVL操作符。
NVL是一个带有两个参数的函数,NVL(arg1,arg2)。如果第一个为NULL,则NVL函数就返回第二个参数。如下面语句中,当第一个参数arg为NULL时,函数返回1。
NVL(arg,1);
NVL函数可以进行嵌套。这样就可以从一组变量值中选择出一个非空值(NOT NULL)。例如有3个变量:A,B和C。你希望返回A。如果A为NULL,就返回B。如果B为NULL,就返回C。如果3个变量都为NULL,就返回0。这个表达式为:
NVL(A,NVL(B,NVL(C,0)));
在下面的代码中,当OTHER_NAME为NULL时,可用一个空字符串替代它。这样就能从布尔表达式中删除所有的空值。
Set serveroutput on
DECLARE
my_name varchar2(10) :=’SCOTT’;
other_name varchar2(10) :=NULL;
BEGIN
IF
NOT (NVL(other_name,’ ‘) = ’JOHN’ OR NVL(other_name,’ ‘) = ‘SCOTT’)
THEN
dbms_output.put_line(‘CONDITION_TRUE’);
ELSE
Dbms_output.put_line(‘CONDITION_FALSE’);
END IF;
END;
以上代码块的输出结果是:CONDITION_TRUE