SQL DECODE函式使用

2021-06-05 11:14:58 字數 2472 閱讀 6394

decode函式是oracle pl/sql是功能強大的函式之一,目前還只有oracle公司的sql提供了此函式,其他資料庫廠商的sql實現還沒有此功能。decode有什麼用途呢? 先構造乙個例子,假設我們想給智星職員加工資,其標準是:工資在8000元以下的將加20%;工資在8000元以上的加15%,通常的做法是,先選出記錄中的工資字段值? select salary into var-salary from employee,然後對變數var-salary用if-then-else或choose case之類的流控制語句進行判斷。 如果用decode函式,那麼我們就可以把這些流控制語句省略,通過sql語句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很簡潔? decode的語法:decode(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等於if1時,decode函式的結果返回then1,...,如果不等於任何乙個if值,則返回else。初看一下,decode 只能做等於測試,但剛才也看到了,我們通過一些函式或計算替代value,是可以使decode函式具備大於、小於或等於功能。

decode()函式使用技巧

·軟體環境:

1、windows nt4.0+oracle 8.0.4

2、oracle安裝路徑為:c:\orant

·含**釋:

decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,預設值)

該函式的含義如下:

if 條件=值1 then

return(翻譯值1)

elsif 條件=值2 then

return(翻譯值2)

......

elsif 條件=值n then

return(翻譯值n)

else

return(預設值)

end if

· 使用方法:

1、比較大小

select decode(sign(變數1-變數2),-1,變數1,變數2) from dual; --取較小值

sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1

例如:變數1=10,變數2=20

則sign(變數1-變數2)返回-1,decode解碼結果為「變數1」,達到了取較小值的目的。

2、表、檢視結構轉化

現有乙個商品銷售表sale,表結構為:

month char(6) --月份

sell number(10,2) --月銷售金額

現有資料為:

200001 1000

200002 1100

200003 1200

200004 1300

200005 1400

200006 1500

200007 1600

200101 1100

200202 1200

200301 1300

想要轉化為以下結構的資料:

year char(4) --年份

month1 number(10,2) --1月銷售金額

month2 number(10,2) --2月銷售金額

month3 number(10,2) --3月銷售金額

month4 number(10,2) --4月銷售金額

month5 number(10,2) --5月銷售金額

month6 number(10,2) --6月銷售金額

month7 number(10,2) --7月銷售金額

month8 number(10,2) --8月銷售金額

month9 number(10,2) --9月銷售金額

month10 number(10,2) --10月銷售金額

month11 number(10,2) --11月銷售金額

month12 number(10,2) --12月銷售金額

結構轉化的sql語句為:

create or replace view

v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)

asselect

substrb(month,1,4),

sum(decode(substrb(month,5,2),'01',sell,0)),

sum(decode(substrb(month,5,2),'02',sell,0)),

sum(decode(substrb(month,5,2),'03',sell,0)),

sum(decode(substrb(month,5,2),'04',sell,0)),

SQL decode()函式用法

decode 函式簡介 主要作用 將查詢結果翻譯成其他值 即以其他形式表現出來,以下舉例說明 使用方法 select decode columnname,值1,翻譯值1,值2,翻譯值2,值n,翻譯值n,預設值 from talbename where 其中columnname為要選擇的table中所...

sql decode函式 翻譯值

decode 函式簡介 主要作用 將查詢結果翻譯成其他值 即以其他形式表現出來,以下舉例說明 使用方法 select decode columnname,值1,翻譯值1,值2,翻譯值2,值n,翻譯值n,預設值 from talbename where 其中columnname為要選擇的table中所...

函式 使用函式指標操作函式

設計乙個名為calculate 的函式,他接受兩個double 值和乙個指向函式的指標,而被指向的函式接受兩個double引數,並返回乙個double值 calculate 函式的型別也是double,並返回被指向的函式值用calculate 的兩個double引數計算得到的值。例如,假設add 函...