<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    WEB開發 de 點滴

    by sanwish

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      38 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
    ????????? 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)

    as

    select

    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)),

    posted on 2008-11-10 10:00 sanwish 閱讀(1469) 評論(0)  編輯  收藏 所屬分類: Sql
    主站蜘蛛池模板: 国产精品久久久亚洲| 国产又长又粗又爽免费视频| 亚洲无线码在线一区观看| 特级毛片全部免费播放| 国产男女性潮高清免费网站 | 免费A级毛片无码A∨男男| 亚洲私人无码综合久久网| 超pen个人视频国产免费观看| 欧美日韩亚洲精品| 免费一级毛片一级毛片aa| 一级毛片免费一级直接观看| 国产亚洲精品精品国产亚洲综合| 97超高清在线观看免费视频| 亚洲精品无码av人在线观看| 99久久免费看国产精品| 亚洲国产精品xo在线观看| 四虎永久在线精品免费网址| 美美女高清毛片视频黄的一免费| 亚洲麻豆精品国偷自产在线91| 国产精品免费视频观看拍拍| 亚洲AV永久无码区成人网站| 桃子视频在线观看高清免费完整| 亚洲欧美日韩一区二区三区在线| 免费在线观看黄色毛片| 久久99青青精品免费观看| 亚洲综合色一区二区三区| 亚洲乱亚洲乱少妇无码| 1000部禁片黄的免费看| 亚洲AⅤ男人的天堂在线观看| 久久亚洲色一区二区三区| 91精品免费久久久久久久久| 亚洲AV无码成人网站在线观看| 中文字幕亚洲一区二区va在线| 久视频精品免费观看99| 国产精品亚洲va在线观看| 亚洲电影一区二区| 国产免费人视频在线观看免费| 在线观看免费无码专区| 亚洲精品无码mⅴ在线观看| 亚洲AV综合色区无码一区爱AV| 在线精品免费视频|