• 或许正相反,朝鲜就是例证 2019-05-15
  • 社会主义社会按劳分配是建立在公有制和私有制并存基础上的,共产主义社会按需分配是建立在公有制基础上的,所有制基础不同,其分配形式也就不同。所谓“共产主义... 2019-05-14
  • 曾祖父、曾祖母、祖父、祖母、父亲、母亲、重孙。一家7人,如果两家联姻,两家共十四人,请问:“看着就想笑”你那15人是咋算出来的? 2019-05-14
  • 当下世人皆知:美帝霸权就是搅动亚洲乃至世界混乱之源,更是整个世界和平稳定的最大威胁。 2019-05-12
  • 牵手中东,日照谱写“开放活市”新篇章 2019-05-12
  • 如何缓解眼睛疲劳 吃什么水果让眼睛明亮-美食资讯 2019-05-09
  • Li Keqiang nimmt an Pressekonferenz nach Abschluss der ersten Tagung des 13. NVK teil 2019-05-01
  • 端午假期 重庆旅游业红红火火 2019-04-27
  • 广州市第十五届人大常委会第十四次会议第一次全体会议 2019-04-22
  • 端午小长假杭州接待游客454.8万人次 9成民宿预订一空 2019-04-21
  • 法国巴黎发生人质劫持事件 2019-04-21
  • 中国保险行业协会获第十二届人民企业社会责任奖年度扶贫奖 2019-04-18
  • 3岁男童爬窗走失 民警帮忙找家人 2019-04-18
  • 提供南水北调七成中线水 陕西一江清水送北京 2019-04-11
  • C919首飞机组技术支持团队:和大飞机一起舞动青春 2019-04-06
  • 山西11选5:oracle case when 语句的用法详解

    文章TAG:Oracle case WHEN
    时间:2013-10-05来源:源码库 作者:jingxian 文章热度:
    1. CASE WHEN 表达式有两种形式

    山西十一选五遗漏10 www.fqjb.net 复制代码 代码如下:


    --简单Case函数 
    CASE sex 
    WHEN '1' THEN '男' 
    WHEN '2' THEN '女' 
    ELSE '其他' END 
    --Case搜索函数 
    CASE
    WHEN sex = '1' THEN '男' 
    WHEN sex = '2' THEN '女' 
    ELSE '其他' END 


    2. CASE WHEN 在语句中不同位置的用法
    2.1 SELECT CASE WHEN 用法

    复制代码 代码如下:


    SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1为男生,2位女生*/
                           ELSE NULL
                           END) 男生数,
                    COUNT (CASE WHEN sex = 2 THEN 1
                           ELSE NULL
                           END) 女生数
        FROM students GROUP BY grade;


    2.2 WHERE CASE WHEN 用法

    复制代码 代码如下:


    SELECT T2.*, T1.*
       FROM T1, T2
      WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
                       T1.SOME_TYPE LIKE 'NOTHING%'
                    THEN 1
                  WHEN T2.COMPARE_TYPE != 'A' AND
                       T1.SOME_TYPE NOT LIKE 'NOTHING%'
                    THEN 1
                  ELSE 0
               END) = 1


    2.3 GROUP BY CASE WHEN 用法

    复制代码 代码如下:


    SELECT 
    CASE WHEN salary <= 500 THEN '1' 
    WHEN salary > 500 AND salary <= 600  THEN '2' 
    WHEN salary > 600 AND salary <= 800  THEN '3' 
    WHEN salary > 800 AND salary <= 1000 THEN '4' 
    ELSE NULL END salary_class, -- 别名命名
    COUNT(*) 
    FROM    Table_A 
    GROUP BY 
    CASE WHEN salary <= 500 THEN '1' 
    WHEN salary > 500 AND salary <= 600  THEN '2' 
    WHEN salary > 600 AND salary <= 800  THEN '3' 
    WHEN salary > 800 AND salary <= 1000 THEN '4' 
    ELSE NULL END; 


    3.关于IF-THEN-ELSE的其他实现
    3.1 DECODE() 函数

    复制代码 代码如下:


    select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')
    from   employees;


    貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。
    3.2 在WHERE中特殊实现

    复制代码 代码如下:


    SELECT T2.*, T1.*
       FROM T1, T2
      WHERE (T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%')
             OR
            (T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')


    这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。
    相关oracle教程
    相关资源下载

  • 或许正相反,朝鲜就是例证 2019-05-15
  • 社会主义社会按劳分配是建立在公有制和私有制并存基础上的,共产主义社会按需分配是建立在公有制基础上的,所有制基础不同,其分配形式也就不同。所谓“共产主义... 2019-05-14
  • 曾祖父、曾祖母、祖父、祖母、父亲、母亲、重孙。一家7人,如果两家联姻,两家共十四人,请问:“看着就想笑”你那15人是咋算出来的? 2019-05-14
  • 当下世人皆知:美帝霸权就是搅动亚洲乃至世界混乱之源,更是整个世界和平稳定的最大威胁。 2019-05-12
  • 牵手中东,日照谱写“开放活市”新篇章 2019-05-12
  • 如何缓解眼睛疲劳 吃什么水果让眼睛明亮-美食资讯 2019-05-09
  • Li Keqiang nimmt an Pressekonferenz nach Abschluss der ersten Tagung des 13. NVK teil 2019-05-01
  • 端午假期 重庆旅游业红红火火 2019-04-27
  • 广州市第十五届人大常委会第十四次会议第一次全体会议 2019-04-22
  • 端午小长假杭州接待游客454.8万人次 9成民宿预订一空 2019-04-21
  • 法国巴黎发生人质劫持事件 2019-04-21
  • 中国保险行业协会获第十二届人民企业社会责任奖年度扶贫奖 2019-04-18
  • 3岁男童爬窗走失 民警帮忙找家人 2019-04-18
  • 提供南水北调七成中线水 陕西一江清水送北京 2019-04-11
  • C919首飞机组技术支持团队:和大飞机一起舞动青春 2019-04-06