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()可以為空。