大家先来看看下面这道简单的题目:
1. TEST表包含两个列,TESTCOL定义为数据类型NUMBER(10),TESTCOL_2定义为数据类型VARCHAR2(10)。在Oracle中发出下列语句:insert into test(testcol,testcol_2) values (null, ‘FRANCIS’)
A.Oracle返回结果0 B.Oracle返回结果EMPTY
C.Oracle返回结果NULL D.Oracle返回错误结果
正确答案是:D对NVL()这个简单的函数没能注意其细节,现将NVL()、NVL2()、NULLIF()、Coalesce()函数的用法总结如下:
在学习以上函数之前我们必须明白什么是Oracle中的空值null。
1.NVL函数
NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致。
2.NVL2函数
NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型。
3.NULLIF函数
NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1
4. Coalesce函数
Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。
格式如下:
Coalesce(expr1, expr2, expr3….. exprn)
表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。
返回表达式中第一个非空表达式,如有以下语句: SELECT COALESCE(NULL,NULL,3,4,5) FROM dual 其返回结果为:3
如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。 COALESCE(expression1,...n) 与此 CASE 函数等价:
这个函数实际上是NVL的循环使用,在此就不举例子了。