我想检查一个变量是否为null。如果它为null,那么我想为该变量设置一个值:
//data type of var is number
if Var = null then
var :=5;
endif
但我在制作错误。如何检查变量是否为空?
我使用的是oracle数据类型
答案 0 :(得分:48)
if var is NULL then
var :=5;
end if;
答案 1 :(得分:17)
使用:
IF Var IS NULL THEN
var := 5;
ENDIF;
Oracle 9i +:
var = COALESCE(Var, 5)
其他替代方案:
var = NVL(var, 5)
参考:
答案 2 :(得分:13)
在PL / SQL中,您不能使用'='或'<>'等运算符测试NULL
,因为与NULL
的所有比较都会返回NULL
。要将某些内容与NULL
进行比较,您需要使用特殊运算符IS NULL
或IS NOT NULL
来实现此目的。因此,而不是写
IF var = NULL THEN...
你应该写
IF VAR IS NULL THEN...
在您提供的情况下,您还可以选择使用NVL
内置功能。 NVL
有两个参数,第一个是变量,第二个是值(常量或计算值)。 NVL
查看其第一个参数,如果发现第一个参数为NULL
,则返回第二个参数。如果NVL
的第一个参数不是NULL
,则返回第一个参数。所以你可以重写
IF var IS NULL THEN
var := 5;
END IF;
作为
var := NVL(var, 5);
我希望这会有所帮助。
答案 3 :(得分:4)
使用IS NULL
答案 4 :(得分:3)
答案 5 :(得分:2)
如果var为null,则使用
答案 6 :(得分:2)
永远记住要小心pl / sql条件子句中的空值,因为null永远不会更大,更小,相等或不等于任何东西。避免使用它们的最佳方法是使用nvl。
例如
declare
i integer;
begin
if i <> 1 then
i:=1;
foobar();
end if;
end;
/
永远不要进入if子句。
这些可行。
if 1<>nvl(i,1) then
if i<> 1 or i is null then
答案 7 :(得分:2)
另一种方式:
var := coalesce (var, 5);
COALESCE是ANSI的等效(或多或少)Oracle的NVL功能。