SQL GREATEST 函式例項詳解例項

2022-09-03 15:27:20 字數 1921 閱讀 8171

1、語法

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

2、使用位置

過程性語句和sql語句

3、示例

示例一:

數值——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> sql>select greatest(2, 'a', 12, 3, 16, 8, 9) a from dual;

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

ora-00900: 無效 sql 語句

示例二:

字元創——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-

g示例三:

時間——expr_1為時間型別。

全部為時間型別:

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

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

2017/8/1

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

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

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

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

示例四:

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

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樣例的sh模式為實驗資料 建立實驗資料表 sales fact create table sales fact as select country name country,country subregion region,prod name...

函式指標例項

1.定義 每乙個函式都占用一段記憶體單元,它們有乙個起始位址,指向函式入口位址的指標稱為函式指標。2.語法 指向函式的指標變數的一般定義形式為 資料型別 指標變數名 參數列 3.說明 1 函式指標的定義形式中的資料型別是指函式的返回值的型別。2 區分下面兩個語句 int p int a,int b ...

物件例項函式

coding utf 8 物件例項函式 class people object 如果需要在建立物件的時候,給物件屬性賦值,就可以在初始化函式中傳遞引數,給屬性賦值,如果不需要初始化物件屬性值,就不用寫了 def init self 初始化函式可以不用傳遞引數值 可以直接給屬性賦乙個預設值 self....