微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlServer,oracle中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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐