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 (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 (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 (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;