ORACLE函式之GREATEST函式詳解例項

2021-08-18 21:22:55 字數 2013 閱讀 2316

原文:語法

greatest(expr_1, expr_2, ...expr_n)2說明

greatest(expr_1, expr_2, ...expr_n)

函式從表示式(列、常量、計算值)

expr_1, expr_2, ... expr_n

等中找出最大的數返回。在比較時,

oracie

會自動按表示式的資料型別進行比較,以

expr_1

的資料型別為準。

3允許使用的位置

過程性語句和

sql語句。4示例

4.1示例一【數值】

expr_1

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

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

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

a----------

16部分為數值型,但是字串可以根據

expr_1

的資料型別

通過隱式型別轉換轉成數值型:

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

a----------

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: 

無效數字

4.2示例二【字串】

expr_1

為字元型。按首字母進行比較(

如果相等則向下比較

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

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

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

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

a---

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

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

g4.3

示例三【時間】

expr_1

為時間型別。

全部為時間型別:

sql>selectgreatest(sysdate,to_date('2014-08-01','yyyy-mm-dd')) a from dual;

a-----------

2014/8/1

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

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

selectgreatest(sysdate,'2014-08-01') a from dual

ora-01861:

文字與格式字串不匹配

4.4示例四【空值】

使用greatest取最大值的時候,當

expr

為函式的時候,不可避免的會產生空值。產生空值,函式

greatest

會怎麼進行處理那:

expr_1

為null時:

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

expr_1

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

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

由上可以發現,只要

greatest

的expr有乙個為null,都會返回null。

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 在乙個字串中搜尋指定的字元,返回發現指定的字...