Oracle函式之GREATEST函式詳解例項

2021-10-10 11:01:51 字數 1932 閱讀 1219

greatest(expr_1, expr_2, ...expr_n)

greatest(expr_1, expr_2, ...expr_n)函式從表示式(列、常量、計算值)expr_1, expr_2, ... expr_n等中找出最大的數返回。在比較時,oracie會自動按表示式的資料型別進行比較,以expr_1的資料型別為準。

過程性語句和sql語句。

expr_1為數值型。按大小進行比較。

全部為數值型,取出最大值為16:

select greatest(2, 5, 12, 3, 16, 8, 9) a from dual;

輸出:16

部分為數值型,但是字串可以根據expr_1的資料型別通過隱式型別轉換轉成數值型:

sql>

select greatest(2, '5', 12, 3, 16, 8, 9) a from dual;

輸出:16

部分為數值型,但是字串不能通過隱式型別轉換成數值型會報錯,因為字串a不能轉換成數值型:sql>

select greatest(2, 'a', 12, 3, 16, 8, 9) a from dual;

select greatest(2, 'a', 12, 3, 16, 8, 9) a from dual;

ora-01722:無效數字

expr_1為字元型。按首字母進行比較(如果相等則向下比較)

全部為字元型,取出最大值g:

sql>

select greatest('a', 'b', 'c', 'd', 'e', 'f','g') a from dual;

輸出:g

全部為字元型,首字母相等:

sql>

select greatest('a', 'b', 'c', 'd', 'e','ga', 'gab') a from dual;

輸出:gab

部分為字元型,會把非字元型轉換成字元型:

sql>

select greatest('a', 6, 7, 5000, 'e', 'f','g') a from dual;

輸出:g

expr_1為時間型別。

全部為時間型別:

sql>

select greatest(sysdate,to_date('2014-08-01','yyyy-mm-dd')) a from dual;

輸出:2014/8/1

部分為時間型別,不能進行隱式型別轉換:sql>

select greatest(sysdate,'2014-08-01') a fromdual;

select greatest(sysdate,'2014-08-01') a from dual;

ora-01861:文字與格式字串不匹配

使用greatest取最大值的時候,當expr為函式的時候,不可避免的會產生空值。產生空值,函式greatest會怎麼進行處理那:

expr_1為null時:

sql>

select greatest(null, 'b', 'c', 'd', 'e','ga', 'gab') a from dual;

輸出:null

expr_1不為null時,其它的expr為null時:

sql>

select greatest('a', 'b', 'c', 'd', 'e',null, 'gab') a from dual;

輸出:null

由上可以發現,只要greatest的expr有乙個為null,都會返回null。這種情況可以利用nvl()函式解決。

oracle之通用函式

這些函式適用於任何資料型別,同時也適用於空值 nvl expr1,expr2 如果expr1為空則返回expr2的值,否則返回expr1的值 nvl2 expr1,expr2,expr3 如果引數表示式expr1值為null,則nvl2 函式返回引數表示式expr3的值 如果引數表示式expr1值不...

Oracle 之 常用函式

1 round x y 功能 返回四捨五入後的值 引數 x,y,數字型表示式,如果y不為整數則擷取y的整數部分,如果y 0則四捨五入為y位小數,如果小於0則為四捨五入到小數點向左第y位。返回 數字 示例 selectround 5555.6666,2.1 round 5555.6666,2.6 ro...

oracle 二 之函式

1.ascii 返回與指定的字元對應的十進位制數 2.chr 給出整數,返回對應的字元 3.concat 連線兩個字串 concat 010 88888 轉23 4.initcap 返回字串並將字串的第乙個字母變為大寫 5.instr c1,c2,i,j 在乙個字串中搜尋指定的字元,返回發現指定的字...