Oracle 函數 之 Coalesce()、greatest()、least()

Coalesce()、greatest()、least()sql

oracle比較一列的數據大小時,咱們通常使用max()/min()函數,比較一行的最大值或者最小值時,使用函數Coalesce()/greatest()/least()。oracle

測試數據準備函數

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列表必須是相同類型,也能夠是一個表的同一行、不一樣列的值進行比較。3d

--coalesce測試①:返回2blog

select coalesce(2, 1, 3) Coalesce_test from dual;table

--coalesce測試②:返回mathast

select coalesce('math', 'english', 'chinese') Coalesce_test from dual;class

--coalesce測試③:數據類型不一致,報錯test

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;