1. 程式人生 > >oracle中的函式介紹(一):nvl函式、decode函式、case when函式、sum函式

oracle中的函式介紹(一):nvl函式、decode函式、case when函式、sum函式

最近做專案接觸到的oracle資料庫比較多,經常用到裡面的一些函式,以前的部落格中也介紹過行轉列和列轉行,這次再簡單給大家介紹幾個:

nvl()

NVL(a,b)就是判斷a是否是NULL,如果不是返回a的值,如果是返回b的值,b可以是一個固定值或者也可以是重新巢狀的函式求出的值。

例子:nvl(a,'a不能為空')

decode()

DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ),Value 代表某個表的任何型別的任意列或一個通過計算所得的任何結果。

當每個value值被測試,如果value的值為if1,Decode 函式的結果是then1;如果value等於if2,Decode函式結果是then2;等等。事實上,

可以給出

多個if/then 配對。如果value結果不等於給出的任何配對時,Decode 結果就返回else 。需要注意的是,這裡的if、then及else 都可以是函式或計算表

達式。

例子:decode(顏色欄位,‘白色’,‘這是白色’,‘黑色’,‘這是黑色’)

case when

case when語句類似於C#語法中的if else語法,比如:select case when id > 0 then 1 else 0 end as flag from table1,這句sql就表示 篩選所有

table1中的記錄,當id大於0時,新的flag列就為1,否則,flag列為0

例子:select case when sex='1' then ‘男’

else 0

end as 性別 from table

sum()over()

sum()over(),在寫SQL時我們經常需要彙總一些欄位,當然我們也可以在IDE中重新計算,由於sum()是一個分組函式,當我們僅僅是需要計算

一列的值時,over()可以為空。