zoukankan      html  css  js  c++  java
  • 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

    select empno,

    decode(empno,7369,'smith',7499,'allen',7521,'ward',7566,'jones','unknow')

    as name from emp where rownum<=10

     

    2:使用decode比较大小

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

    sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

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

     

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

     

    3:使用decode函数分段

    工资大于5000为高薪,工资介于3000到5000为中等,工资小于3000为低薪

    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

     

    4:利用decode实现表或者视图的行列转换

    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

     

    5:使用decode函数来使用表达式来搜索字符串

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

    decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。

    SELECT

      ENAME,

      SAL,

      DECODE(INSTR(ENAME, 'S'),

          0,

          '不含有s',

          '含有s') AS INFO

    FROM

      EMP

     

    比如我要查询某班男生和女生的数量分别是多少?

    通常我们这么写:
    select count(*) from 表 where 性别 = 男;
    select count(*) from 表 where 性别 = 女;

    要想显示到一起还要union一下,太麻烦了

    用decode呢,只需要一句话

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

  • 相关阅读:
    ocx文件转换成C#程序引用的DLL
    CSS颜色代码 颜色值 颜色名字大全(转载)
    WinForm轻松实现自定义分页 (转载)
    如何:使用PicturBox实现类似淘宝网站图片的局部放大功能
    转载jQuery图片放大插件[twiPicZoom]
    LINQ查询返回DataTable类型
    最喜欢的VS 键盘快捷键摘抄
    Codeforces Round #336 (Div. 2)B 暴力 C dp D 区间dp
    Educational Codeforces Round 24 A 水 B stl C 暴力 D stl模拟 E 二分
    poj 1185 状态压缩
  • 原文地址:https://www.cnblogs.com/chen8023miss/p/11229803.html
Copyright © 2011-2022 走看看