国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

oracle中decode函數的使用方法示例

2024-08-29 14:00:52
字體:
來源:轉載
供稿:網友

decode的幾種用法

1:使用decode判斷字符串是否一樣

DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

含義為
IF 條件=值1 THEN
    RETURN(value 1)

ELSIF 條件=值2 THEN
    RETURN(value 2)
    ......

ELSIF 條件=值n THEN
    RETURN(value 3)
ELSE
    RETURN(default)
END IF

sql測試

select empno,decode(empno,7369,'smith',7499,'allen',7521,'ward',7566,'jones','unknow') as name from emp where rownum<=10

輸出結果

7369 smith7499 allen7521 ward7566 jones7654 unknow7698 unknow7782 unknow7788 unknow7839 unknow7844 unknow

2:使用decode比較大小

select decode(sign(var1-var2),-1,var 1,var2) from dual

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

sql測試

select decode(sign(100-90),-1,100,90) from dual

輸出結果

90

100-90=10>0 則會返回1,所以decode函數最終取值為90

反正

select decode(sign(100-90),1,100,90) from dual

輸出結果

100

100-90=10>0返回1,判斷結果為1,返回第一個變量100,最終輸出結果為100

3:使用decode函數分段

工資大于5000為高薪,工資介于3000到5000為中等,工資小于3000為低薪

sql測試

SELECT   ename,sal,  DECODE(SIGN(sal - 5000),      1,      'high sal',      0,      'high sal',      - 1,      DECODE(SIGN(sal - 3000),          1,          'mid sal',          0,          'mid sal',          - 1,          DECODE(SIGN(sal - 1000),              1,              'low sal',              0,              'low sal',              - 1,              'low sal')))FROM  emp

輸出結果

SMITH  800  low salALLEN 1600 low salWARD 1250 low salJONES 2975 low salMARTIN 1250 low salBLAKE  2850 low salCLARK 2450 low salSCOTT 3000 mid salKING 5000 high salTURNER 1500 low salADAMS 1100 low salJAMES 950     low salFORD 3000 mid salMILLER 1300 low sal

4:利用decode實現表或者試圖的行列轉換

sql測試

SELECT     SUM(DECODE(ENAME,'SMITH',SAL,0)) SMITH,    SUM(DECODE(ENAME,'ALLEN',SAL,0)) ALLEN,    SUM(DECODE(ENAME,'WARD',SAL,0))  WARD,    SUM(DECODE(ENAME,'JONES',SAL,0)) JONES,    SUM(DECODE(ENAME,'MARTIN',SAL,0)) MARTIN FROM EMP

輸出結果如下

SMITH ALLEN WARD  JONES MARTIN 800 1600  1250    2975    1250

5:使用decode函數來使用表達式來搜索字符串

decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)

decode函數比較表達式和搜索字,如果匹配,返回結果;如果不匹配,返回default值;如果未定義default值,則返回空值。

sql測試

SELECT   ENAME,  SAL,  DECODE(INSTR(ENAME, 'S'),      0,      '不含有s',      '含有s') AS INFOFROM  EMP

輸出結果

SMITH 800      含有sALLEN 1600  不含有sWARD 1250  不含有sJONES 2975   含有sMARTIN 1250   不含有sBLAKE 2850   不含有sCLARK 2450   不含有sSCOTT 3000  含有sKING 5000  不含有sTURNER 1500  不含有sADAMS 1100  含有sJAMES 950       含有sFORD 3000  不含有sMILLER 1300  不含有s

Decode函數在實際開發中非常的有用

結合Lpad函數,如何使主鍵的值自動加1并在前面補0

select LPAD(decode(count(記錄編號),0,1,max(to_number(記錄編號)+1)),14,'0') 記錄編號 from tetdmis

eg:

select decode(dir,1,0,1) from a1_interval

dir 的值是1變為0,是0則變為1

比如我要查詢某班男生和女生的數量分別是多少?

通常我們這么寫:
select count(*) from 表 where 性別 = 男;
select count(*) from 表 where 性別 = 女;

要想顯示到一起還要union一下,太麻煩了

用decode呢,只需要一句話

select sum(decode(性別,男,1,0)),sum(decode(性別,女,1,0)) from 表

eg:

select sum(decode(siteno,'LT',1,0)),sum(decode(siteno,'SZ',1,0)) from facd605;select sum(case siteno when 'LT' then 1 else 0 end),sum(case siteno when 'SZ' then 1 else 0 end) from facd605;

總結

以上就是本文關于oracle中decode函數的使用方法示例的全部內容,希望對大家有所幫助。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹿泉市| 元阳县| 大方县| 浦北县| 虎林市| 洛川县| 永春县| 玛曲县| 马边| 湘潭市| 西乌| 孙吴县| 富顺县| 且末县| 墨江| 乌拉特后旗| SHOW| 乐都县| 永德县| 浦县| 勃利县| 中阳县| 巴塘县| 依兰县| 广宗县| 通州市| 渝中区| 铁岭市| 古田县| 遵义市| 陕西省| 南召县| 黔江区| 新野县| 盖州市| 和政县| 诏安县| 紫金县| 鸡西市| 彰武县| 桐乡市|