Oracle
比较一列的最大值或者最小值,我们会不假思索地用
MAX
和
MIN
函数,但是对于
比较一行的最大值或最小值呢?是不是日常用的少,很多人都不知道有
ORACLE
也有内置
函数实现这个功能:
COALESCE
/
GREATEST
/
LEAST
.
1.
COALESCE
返回该表达式列表的第一个非空
value
。
格式:
COALESCE
(
value1, value2, value3, ...
)
含义:返回
value
列表第一个非空的值。
value
列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
EXAMPLE: select
coalesce
(1, null, 2 ) from dual ; --
返回
1
select
coalesce
( null, 2, 1 ) from dual ; --
返回
2
select
coalesce
(t.empno, t.mgr ) from
scott.emp t ; --
效果类似
NVL( t.empno, t.mgr )
2.
GREATEST
返回值列表中最大值
格式:
GREATEST
(
value1, value2, value3, ...
)
含义:返回
value
列表最大的值。
value
列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
当
value
值列表中有一个为
NULL
,则返回
NULL
值。
EXAMPLE: select
greatest
(1, 3, 2 ) from dual ; --
返回
3
select
greatest
( 'A', 'B', 'C' ) from dual ; --
返回
C
select
greatest
(null, 'B', 'C' ) from dual ; --
返回
null
select
greatest
(t.empno, t.mgr ) from
scott.emp t ; --
返回
empno
和
mgr
较
大值
3.
LEAST
返回值列表中最小值
格式:
LEAST
(
value1, value2, value3, ...
)
含义:返回
value
列表最小的值。
value
列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
当
value
值列表中有一个为
NULL
,则返回
NULL
值。
EXAMPLE: select
least
(1, 3, 2 ) from dual ; --
返回
1
select
least
( 'A', 'B', 'C' ) from dual ; --
返回
A
select
least
(null, 'B', 'C' ) from dual ; --
返回
null
select
least
(t.empno, t.mgr ) from
scott.emp t ; --
返回
empno
和
mgr
较小
值