您的位置首页百科问答

oracle函数COALESCE、GREATEST和LEAST如何使用

oracle函数COALESCE、GREATEST和LEAST如何使用

的有关信息介绍如下:

oracle函数COALESCE、GREATEST和LEAST如何使用

Oracle比较一列的最大值或者最小值,使用的是MAX和MIN函数,但比较同一行的数据的时候,我们应该使用什么函数呢,下面就来介绍下同一行数据之间的比较

首先介绍下COALESCE函数

COALESCE(value1, value2, value3, ...)返回value值列表中第一个不为空的值

select coalesce(55, null, 33) from dual; -- 返回55

select coalesce(null, 3, 1 ) from dual; -- 返回3

将以上两句sql在sqldeveloper中运行测试,看下查询结果

GREATEST(value1, value2, value3, ...)返回value值列表中最大的一个值

当value值列表中有一个为NULL,则返回NULL值。

select greatest(5, 10, 6 ) from dual; -- 返回10

select greatest('A', 'E', 'C') from dual; -- 返回E

select greatest(null, 'E', 'C') from dual; -- 返回null

LEAST(value1, value2, value3, ...)返回value值列表中最小的一个值

当value值列表中有一个为NULL,则返回NULL值。

select least(1, 5, 2 ) from dual; -- 返回1

select least('A', 'E', 'C') from dual; -- 返回A

select least(null, 'E', 'C') from dual; -- 返回null

上面介绍的函数是在固定值中比较的,下面介绍下如何在应用在表中的数据,这里以test表来测试,test表如下图所示

分别执行以下sql语句

select greatest(t.age, t.score) from test t; -- 返回age和score较大值

select least(t.age, t.score) from test t; -- 返回age和score较小值

select coalesce(t.age, t.score) from test t; -- 类似 NVL(t.age, t.score)

通过coalesce例子可以看出,与NVL(expr1,expr2)函数类似

如果第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。NVL2函数用法NVL2(expr1,expr2, expr3),如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值