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