您的位置:首页 > 数据库 > Oracle

Oracle中的NVL()、NVL2()、NULLIF()、Coalesce()函数

2014-01-16 20:11 633 查看
大家先来看看下面这道简单的题目:

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的循环使用,在此就不举例子了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: