有没有好心人,帮帮忙
需要比较A,B 两个时间类型的字段,
当A为空时,取B值;
当B为空时,取A值;
A与B比较时,取小的那个值。
怎么写啊,好心人,帮帮忙吧!!!
------解决方案--------------------decode(greatest(a,b),a,b,b,a)
和你说一下原理哈。。这个函数是比大小取大值。。另外因为如果ab存在null时候该函数返回null.
所以放在decode里面做相反取值非常合适。
谁大就去另一个值,谁是null也是取另一个值。。
------解决方案--------------------snbxp的可以有。
------解决方案--------------------1 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 较大值
2. 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 较小值
nvl(a,b)----如果a is null 则就取b
select least(nvl(null,'b'),nvl(null,'a')) from dual结果就是a