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;

 

版权声明:本文为wangrui1587165原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wangrui1587165/p/9983283.html