Oracle 函数 之 Coalesce()、greatest()、least()
Coalesce()、greatest()、least()
oracle比较一列的数据大小时,我们一般使用max()/min()函数,比较一行的最大值或者最小值时,使用函数Coalesce()/greatest()/least()。
测试数据准备
create table stu_score( stu_id varchar2(4), math integer default 0, --姓名 english integer default 0, --性别 1 男 2 女 0 未知 chinese integer default 0 ); insert into stu_score(stu_id, math, english, chinese) values(\'0001\', \'11\', \'22\', \'33\'); insert into stu_score(stu_id, math, english, chinese) values(\'0002\', \'44\', \'55\', \'66\'); insert into stu_score(stu_id, math, english, chinese) values(\'0003\', \'77\', \'88\', \'99\'); insert into stu_score(stu_id, math, english, chinese) values(\'0004\', \'100\', \'\', \'\'); insert into stu_score(stu_id, math, english, chinese) values(\'0005\', \'\', \'100\', \'\'); insert into stu_score(stu_id, math, english, chinese) values(\'0006\', \'\', \'\', \'100\');
Coalesce()
Coalesce (value1, value2, value3, …)
返回改表达式列表的第一个非空的值,value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
–coalesce测试①:返回2
select coalesce(2, 1, 3) Coalesce_test from dual;
–coalesce测试②:返回math
select coalesce(\’math\’, \’english\’, \’chinese\’) Coalesce_test from dual;
–coalesce测试③:数据类型不一致,报错
select coalesce(\’math\’, \’english\’, \’chinese\’,1) Coalesce_test from dual;
–coalesce测试④:返回结果如下图
select stu_id, coalesce(math, english, chinese) Coalesce_test from stu_score;
greatest()
greatest (value1, value2, value3, …)
返回value列表最大的值。value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。当value值列表中有一个为NULL,则返回NULL值。
–greatest测试①:返回3
select greatest(2, 1, 3) Coalesce_test from dual;
–greatest测试②:返回math
select greatest(\’math\’, \’english\’, \’chinese\’) Coalesce_test from dual;
–greatest测试③:自动处理数据类型,返回math
select greatest(\’math\’, \’english\’, \’chinese\’,1) Coalesce_test from dual;
–greatest测试④:返回结果如下图,如果value值列表中有一个为null,则返回null值
select stu_id, greatest(math, english, chinese) Coalesce_test from stu_score;
least()
least (value1, value2, value3, …)
返回value列表最小的值。value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。当value值列表中有一个为NULL,则返回NULL值。
–least测试①:返回1
select least(2, 1, 3) Coalesce_test from dual;
–least测试②:返回chinese
select least(\’math\’, \’english\’, \’chinese\’) Coalesce_test from dual;
–least测试③:自动处理数据类型,返回1
select least(\’math\’, \’english\’, \’chinese\’,1) Coalesce_test from dual;
–least测试④:返回结果如下图,如果value值列表中有一个为null,则返回null值
select stu_id, least(math, english, chinese) Coalesce_test from stu_score;