• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sql学习之CASE WHEN THEN ELSE END的用法

    超强:SQL命令中的case...when...then...else...end条件查询(不同于where) 与 类型转换的用法

    case...when...then...else...end,是在from前面,可以改变记录中某字段的值,不能决定是否显示该记录;

    where,是在from后面,不可以改变记录中某字段的值,但可以决定是否显示该记录。

    case...when...then...else...end,可用于对同一记录的多个字段求和,带分支判断。

    另外,对字段判断和处理,往往需要强制类型转换。

    select to_number('19f','xxx') from dual; --八进制
    得到  415
    select to_number('f','xx') from dual; --十六进制
    得到  15

    select to_number('123')  from dual; --十进制
    得到  123

    与date操作关系最大的就是两个转换函数:to_date(),to_char()
    to_date() 作用将字符类型按一定格式转化为日期类型:
    具体用法:to_date('2004-11-27','yyyy-mm-dd'),
    前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。如to_date('2004-11-27 13:34:43', 'yyyy-mm-dd hh24:mi:ss') 将得到具体的时间

    字符串处理函数:

    select to_number(SUBSTR(rain_1,0,2),'xx')  from obs

    (一)Access 数据库

    大家知道在access中有iif函数,能将一个判断赋值序列简化成一个表达式,比如
    iif(a>b,1,2),如果确实a>b那么结果给出1,否则就是2。这实在很方便。

    示例
    (1)数字
    如果 Measures.CurrentMember 是空单元,则下面的示例返回 0,否则返回 1
    IIf(IsEmpty(Measures.CurrentMember), 0, 1)

    (2)字符串
    如果Measures.CurrentMember 是空单元,则下面的字符串返回字符串"Yes",否则返回字符串"No"
    IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")

    在Access中我可以用IIF函数进行统计汇总,比如,要知道实际应该交费的用户个数
    Access写法:Select sum(iif(金额>0, 1,0)) as num from 费用

    MS SQL写法:select sum(case when 金额>0 then 1 else 0 end) as num from 费用

    (二)Ms SQL 数据库

    IIF在SQL中是 case when ....then ...else...  end

    例:select id,case when bz='1' then xx when bz='2' then yy else zz end as tt from xxx

    这里我举个例子,有一个表政策法规表(policy_fgxx),有ID(主键)、bzh(标准号)、zynr(主要内容)、

    fbrq(发布日期)四个字段

    Select * From policy_fgxx 结果:

    ID bzh zynr fbrq
    13 001 p>你好/p> 2010-05-07 0:00:00
    15 NULL

    我不想要上面的结果,我想要下面这个结果:

    ID bzh zynr fbrq
    13 001 p>你好/p> 2010-05-07 0:00:00
    15 无 1990-06-06 0:00:00

    也就是说,标准号为空的时候我想让它显示空,发布日期为null的时候我想让它显示我指定的日期

    下面我给出写法,大家可以自己思考

    Select id,zynr,
    (case when bzh='' then '无' else bzh end) AS bzh,
    (case when fbrq is null then '1982-06-02' else fbrq end) AS fbrq 
    From policy_fgxx
    
    

    sqlite case when then else end

    sqlite> select datetime(CreateTime, 'unixepoch', 'localtime') 时间,Message 内容,case Des when 0 then '乐' else '园' end 名称
     from Chat_af863d30e1c1e5eba27a0df37a75dba0 where rowid = 2;
    +---------------------+----------+------+
    | 时间        | 内容   | 名称 |
    +---------------------+----------+------+
    | 2013-08-22 18:54:13 | 网络不好 | 园  |
    | 2013-08-22 20:19:07 | 乔乐   | 园  |
    +---------------------+----------+------+
    2 rows in set

    其它网友的实例:

     Id     name        dept
    1        aa          dept1
    2        bb          dept1
    3        cc           dept2

    SELECT SUM(CASE decp WHEN 'decp1' THEN 1 ELSE 0 end ) AS decp1,
    sum(case decp when 'decp2'then 1 else 0 end)as decp2
    FROM teacher

    生成:

    dept1     dept2

    2             1

    这个例子主要是学习了(CASE  WHEN  THEN   ELSE   end )语句的用法.

    在我们做数据统计的时候这是一个非常有用的语句。

    您可能感兴趣的文章:
    • MySQL 的CASE WHEN 语句使用说明
    • SQL集合函数中case when then 使用技巧
    • MySQL的CASE WHEN语句的几个使用实例
    • MySQL中使用case when 语句实现多条件查询的方法
    • sql 中 case when 语法使用方法
    • 浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用
    • sum(case when then)(判断男女生的个数)
    • mysql case when group by 实例详解
    • 关于case when语句的报错问题详解
    • MySQL排序中使用CASE WHEN的方法示例
    上一篇:SQL语句学习
    下一篇:8种主流NoSQL数据库系统特性对比和最佳应用场景
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    sql学习之CASE WHEN THEN ELSE END的用法 sql,学,习之,CASE,WHEN,THEN,