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),如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值