• sqlServer,oracle中case关键字的用法


    一直在使用SQL Server,现在学习Oracle时发现SQL Server和Oracle中case语句有点小小的差别,不过两种case写法是一样的。 在写SQL时,有时要根据已有的列值构造新的列值,这时就要用到的SQL中的case关键字。如下所示查询负责人信息表(T_MS_CustomerCrmInfoDutyPerson)中的是否是主要负责人(isMainDuty)字段,但是这个字段的值是以枚举的方式存储的,存储0表示是否,1表示是,否则表示未判断。这时直接查询出的值不是自己需要的值,可以用case关键字重新构建列值。
    select case
              when cfdutystate=0 then '否'
              when cfdutystate=1 then '是'
              else null
           end as isMainDuty
    from T_MS_CustomerCrmInfoDutyPerson
    注意点: 1,以case开头,以end结尾 2,when后跟条件分支中,then后为显示结果 3,else为除此之外的默认情况,类似于java的switch case的default,可以不加 4,Oracle中end后跟别名或者sqlserver中语法如下: isMainDuty =case when cfdutystate=0 then '否' when cfdutystate=1 then '是' else null end 除此之外,case也可以用到group by语句中以根据需要实现灵活的分组操作,如下所示的列子:
    SELECT
        CASE
            WHEN price IS NULL THEN 'Unpriced'
            WHEN price < 10 THEN 'Bargain'
            WHEN price BETWEEN 10 and 20 THEN 'Average'
            ELSE 'Gift to impress relatives'
        END AS Range,
        Title
    FROM titles
    GROUP BY
        CASE
            WHEN price IS NULL THEN 'Unpriced'
            WHEN price < 10 THEN 'Bargain'
            WHEN price BETWEEN 10 and 20 THEN 'Average'
            ELSE 'Gift to impress relatives'
        END,
        Title
    ORDER BY
        CASE
            WHEN price IS NULL THEN 'Unpriced'
            WHEN price < 10 THEN 'Bargain'
            WHEN price BETWEEN 10 and 20 THEN 'Average'
            ELSE 'Gift to impress relatives'
        END,
        Title 
  • 相关阅读:
    团队作业第五次——Alpha冲刺
    Alpha冲刺——总结
    冲刺随笔
    冲刺随笔——Day_Nine
    冲刺随笔——Day_Eight
    冲刺随笔——Day_Seven
    冲刺随笔——Day_Three
    团队作业第五次——Alpha冲刺
    第06组 Alpha冲刺(1/6)
    第06组 团队Git现场编程实战
  • 原文地址:https://www.cnblogs.com/wanyakun/p/3403261.html
Copyright © 2020-2023  润新知