我想检查一个变量是否为null。如果它是null,那么我想给这个变量设置一个值:
//data type of var is number if Var = null then var :=5; endif
但是我得到错误在它.我怎么能检查如果一个变量是空的?我使用oracle数据类型
a0x5cqrl1#
if var is NULL then var :=5; end if;
wvt8vs2t2#
用途:
IF Var IS NULL THEN var := 5; END IF;
Oracle 9i+:
var := COALESCE(Var, 5)
其他替代品:
var := NVL(var, 5)
参考文献:
b1payxdu3#
在PL/SQL中,不能使用'='或'〈〉'等运算符来测试NULL,因为与NULL的所有比较都返回NULL。要与NULL进行比较,您需要使用专门用于此目的的特殊运算符IS NULL或IS NOT NULL。因此,无需编写
NULL
IS NULL
IS NOT NULL
IF var = NULL THEN...
你应该写
IF VAR IS NULL THEN...
在您给出的例子中,您还可以选择使用NVL内置函数。NVL有两个参数,第一个是变量,第二个是值NVL查看其第一个参数,如果发现第一个参数是NULL,返回第二个参数。如果NVL的第一个参数不是NULL,则返回第一个参数。因此您可以重写
NVL
IF var IS NULL THEN var := 5; END IF;
作为
var := NVL(var, 5);
希望这能帮上忙。
因为我写这个答案已经快十年了,让我们通过扩展它来庆祝一下。COALESCE函数是Oracle的NVL的ANSI等效函数。它与NVL在IMO的几个好方面有所不同:1.它接受任意数量的参数,并返回第一个不为NULL的参数。如果传递给COALESCE的所有参数都为NULL,则返回NULL。1.与NVL相反,COALESCE只在必要时计算参数,而NVL计算两个参数,然后确定第一个参数是否为NULL等。因此COALESCE可以更高效,因为它不会花费时间计算不会使用的内容(这可能会导致不必要的副作用),但这也意味着COALESCE不是NVL的100%直接替代品。
COALESCE
qnyhuwrf4#
使用IS NULLreference page
sxissh065#
还有NVL功能http://www.techonthenet.com/oracle/functions/nvl.php
izj3ouym6#
如果var为null则使用
b09cbbtk7#
永远记住要小心pl/sql条件子句中的null,因为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
5rgfhyps8#
另一种方式:
var := coalesce (var, 5);
COALESCE是Oracle的NVL函数的ANSI等效函数(或多或少)。
8条答案
按热度按时间a0x5cqrl1#
wvt8vs2t2#
用途:
Oracle 9i+:
其他替代品:
参考文献:
b1payxdu3#
在PL/SQL中,不能使用'='或'〈〉'等运算符来测试
NULL
,因为与NULL
的所有比较都返回NULL
。要与NULL
进行比较,您需要使用专门用于此目的的特殊运算符IS NULL
或IS NOT NULL
。因此,无需编写你应该写
在您给出的例子中,您还可以选择使用
NVL
内置函数。NVL
有两个参数,第一个是变量,第二个是值NVL
查看其第一个参数,如果发现第一个参数是NULL
,返回第二个参数。如果NVL
的第一个参数不是NULL
,则返回第一个参数。因此您可以重写作为
希望这能帮上忙。
编辑
因为我写这个答案已经快十年了,让我们通过扩展它来庆祝一下。
COALESCE
函数是Oracle的NVL
的ANSI等效函数。它与NVL
在IMO的几个好方面有所不同:1.它接受任意数量的参数,并返回第一个不为NULL的参数。如果传递给
COALESCE
的所有参数都为NULL,则返回NULL。1.与
NVL
相反,COALESCE
只在必要时计算参数,而NVL
计算两个参数,然后确定第一个参数是否为NULL等。因此COALESCE
可以更高效,因为它不会花费时间计算不会使用的内容(这可能会导致不必要的副作用),但这也意味着COALESCE
不是NVL
的100%直接替代品。qnyhuwrf4#
使用IS NULL
reference page
sxissh065#
还有NVL功能
http://www.techonthenet.com/oracle/functions/nvl.php
izj3ouym6#
如果var为null则使用
b09cbbtk7#
永远记住要小心pl/sql条件子句中的null,因为null永远不会大于,小于,等于或不等于任何值。避免它们的最好方法是使用nvl。
举个例子
永远不要进入if子句。
这些会有用的。
5rgfhyps8#
另一种方式:
COALESCE是Oracle的NVL函数的ANSI等效函数(或多或少)。