oracle非空判断函数,Oracle NULL相关函数

一、NVL

a276b871a57591502596da7673c78618.png

官方解释:

Purpose

NVL lets you replace null (returned as a blank) with a string in the

results of a query.

If expr1 is null, then NVL returns expr2.

Ifexpr1 is not null, then NVL returns expr1.

如果expr1是null,则返回expr2,如果expr1 is not null,则返回expr1.

The arguments expr1 and expr2 can have any data type.

If their data types are different, then Oracle Database implicitly converts one

to the other.

If they cannot be converted implicitly, then the database returns an

error.

expr1andexpr2可以是任意的数据类型,但他们必须是同一数据类型,或者是隐式转换为同一数据类型,又或者是显示转换为同一数据类型。

如果他们不是同一类型,则报错。

The implicit conversion is implemented as follows:

If expr1 is character data, then Oracle Database converts expr2 to the

data type ofexpr1 before comparing them and returns VARCHAR2 in the character

set ofexpr1.

如果expr1 是字符类型,则expr2在比较前转换为expr1的数据类型,在进行比较。

If expr1 is numeric, then Oracle Database determines which argument has

the highest numeric precedence, implicitly converts the other argument to that

data type, and returns that data type.

如果expr1是数字类型,则判断哪个参数的数据类型高就隐式转为哪个数据类型。

二、NVL2

d2300295970b458956f44cefb7dcbe68.png

Purpose

NVL2 lets you determine the value returned by a query based on whether

a specified expression is null or not null.

If expr1 is not null, then NVL2 returns expr2.

If expr1 is null, then NVL2 returns expr3.

如果expr1非空,则返回 expr2,如果expr1是空值,则返回expr3

The argument expr1 can have any data type. The

arguments expr2 and expr3 can have any data types

except LONG.

expr1可以是任意数据类型,expr2andexpr3可以是任意数据类型,但不能是LONG类型,且数据类型要一致,或者隐式转换为一致,或者显示转换为一致。

If the data types of expr2 and expr3 are different,

then Oracle Database implicitly converts one to the other.

如果expr2 and expr3 数据类型不同,则隐式转为相同

If they cannot be converted implicitly, then the database returns an

error.

如果不能隐式转换,则报错。

If expr2 is character or numeric data, then the implicit

conversion is implemented as follows:

If expr2 is character data, then Oracle Database converts expr3 to the

data type of expr2 before returning a value unless expr3 is a null

constant.

In that case, a data type conversion is not necessary, and the database

returns VARCHAR2 in the character set of expr2.

如果expr2 是字符类型,则将expr3 转换为expr2相同的数据类型。

If expr2 is numeric data, then Oracle Database determines which argument

has the highest numeric precedence, implicitly converts the other argument to

that data type, and returns that data type.

三、NULLIF

34be5b68b94f9c73dab1a245f15bc817.png

Purpose

NULLIF compares expr1 and expr2. If they are equal,

then the function returns null.

比较expr1 and expr2,如果相等,则返回null值。

If they are not equal, then the function returns expr1. You cannot

specify the literal NULL for expr1.

如果不等,则返回expr1 。不能指定expr1为空。

If both arguments are numeric data types, then Oracle Database determines

the argument with the higher numeric precedence, implicitly converts the other

argument to that data type, and returns that data type.

If the arguments are not numeric, then they must be of the same data type,

or Oracle returns an error.

如果参数类型不是数字类型,则必须是相同数据类型,否则报错。

The NULLIF function is logically equivalent to the

following CASE expression:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

四、COALESCE

97621b4d14370a4056d22f026949ffe9.png

Purpose

COALESCE (expression_1, expression_2, ...,expression_n)

列表中第一个非空的表达式是函数的返回值,如果所有的表达式都是空值,最终将返回一个空值。

COALESCE returns the first non-null expr in the expression

list. You must specify at leasttwo expressions. If

all occurrences of expr evaluate to null, then the function returns

null.

Oracle Database uses short-circuit evaluation. The database evaluates

each expr value and determines whether it is NULL, rather than

evaluating all of the expr values before determining whether any of

them is NULL.

If all occurrences of expr are numeric data type or any

nonnumeric data type that can be implicitly converted to a numeric data type,

then Oracle Database determines the argument with the highest numeric

precedence, implicitly converts the remaining arguments to that data type, and

returns that data type.

This function is a generalization of the NVL function.

You can also use COALESCE as a variety of

the CASE expression. For example,

COALESCE(expr1, expr2)

is equivalent to:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

Similarly,

COALESCE(expr1, expr2, ..., exprn)

where n >= 3, is equivalent to:

CASE WHEN expr1 IS NOT NULL THEN expr1

ELSE COALESCE (expr2, ..., exprn) END

五、DECODE

DECODE(expr,search1,result1[,search2,result2……,default]):

比较expr与search,如果等于search1则返回result1,如果等于search2则返回result2,依次类推,如果都不等于,如果有default则返回default,否则返回NULL.

ORACLE在比较之前,会自动把expr和每一个search隐式转换成第一个search(search1)的数据类型。自动把返回值转换成第一个result(result1)的数据类型。如果第一个result的数据类型为CHAR或者值是null,则Oracle转换返回值为VARCHAR2.

在DECODE函数中,NULL是相等的,如果expr为空,则Oracle将会返回第一个为NULL的search所对应的result。DECODE列表中的最大表达式个数为255个。

expr与search1同类型,searchn与searche1同类型

返回值与result1同类型

原文:http://www.cnblogs.com/gispf/p/3715707.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值