博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL 中case when then else 用法
阅读量:6340 次
发布时间:2019-06-22

本文共 1904 字,大约阅读时间需要 6 分钟。

SQL如下:

SELECT DISTINCT

sy_haken_type,
sy_sagyo_type,
sy_kokyaku_cd
FROm
tbl_syukei
WHERE
(sy_sagyo_ymd between '2010-01-01' AND '2012-12-30')AND
(sy_staff_cd <> '' AND sy_staff_cd is not null) AND
(sy_kokyaku_cd <> '' AND sy_kokyaku_cd is not null) AND
sy_kokyaku_cd='800001'
ORDER BY
sy_kokyaku_cd

原SQL是这样的,然后将查询的结果再进行过滤出,所以这里为了解决内存,和释放SQL,就直接在SQL里面进行一次过滤,直接将外部的逻辑加入到SQL语句中

SELECT DISTINCT

    (case when ((sy_haken_type='D' or sy_haken_type is null or sy_haken_type='')and sy_sagyo_type='0') =true  then '1' else '0' end ) as daliy,
    (case when (sy_sagyo_type in ('1','2'))=true then '1' else '0' end) as  haken,
    (case when ((sy_haken_type in('J','S')) and sy_sagyo_type='0')=true then '1' else '0' end) as  short,
    (case when ((sy_haken_type in('M','L')) and sy_sagyo_type='0')=true then '1' else '0' end) as  ful,
    sy_kokyaku_cd
FROM
    tbl_syukei
WHERE
    (sy_sagyo_ymd  between '2010-01-01' AND    '2012-12-30')AND
    (sy_staff_cd <> '' AND sy_staff_cd is not null) AND
    (sy_kokyaku_cd <> '' AND sy_kokyaku_cd is not null) AND
    sy_kokyaku_cd='800001'
ORDER BY
    sy_kokyaku_cd

查出的结果如下:

 

这里case when 的使用性质就如同if ,

假如 case when ((sy_haken_type='D' or sy_haken_type is null or sy_haken_type='')and sy_sagyo_type='0') =true  

 then '1'

else '0'

end

 

 

SELECT    (case  gensen_type when '00' then 'aa'                   when '01' then 'xx'                   when '10' then 'bb' else 'more' end ) as cFROM    tbl_kokyaku_kyuyoWHERE    ko_cd = '000002'//两种写法,返回一个值和三个值SELECT    (case  when gensen_type='00' then 'xxx' else 'bbb' end) as c,    (case  when gensen_type='01' then 'xxx' else 'bbb' end)  as a,    (case  when gensen_type='10' then 'xxx' else 'bbb' end)  as  bFROM    tbl_kokyaku_kyuyoWHERE    ko_cd = '000002'

  

 用一个表做实验。

将每条数据都进行下过滤的时候也可以用case when

SELECTcase WHEN `user`.id = '01' THEN 'guanliyuan' ELSE 'laji' END AS Id,`user`.`name`,`user`.ageFROM `user`

查询结果:

这里的语法和VB有点像,if 为真then 一个表达式,else 一个表达式,然后end结束,

这个语法能将很多的数据进行一遍过滤

转载地址:http://oihoa.baihongyu.com/

你可能感兴趣的文章
LevelDB
查看>>
CentOS7下安装mysql5.6修改字符集为utf8并开放端口允许远程访问
查看>>
初尝Mcafee之在ePO中进行策略和客户端任务设置【06】
查看>>
C#进阶系列——WebApi 跨域问题解决方案:CORS
查看>>
你真的会玩SQL吗?让人晕头转向的三值逻辑
查看>>
Unity 脚本的未来发展
查看>>
hdu 2055 An easy problem (java)
查看>>
JQuery:JQuery捕获HTML
查看>>
js自动闭合html标签,自动补全html标记
查看>>
cpu进程调度---RT Throttling【转】
查看>>
在MapGuide 的Fusion Viewer的选择面板中显示超链接
查看>>
CentOS7下单机部署RabbltMQ环境的操作记录
查看>>
unity shader tags
查看>>
挺有意思的,队列,先进先出,排队进行!
查看>>
pom-4.0.0.xml中心仓库
查看>>
C# 视频监控系列(8):服务器端——预览和可被客户端连接
查看>>
PostgreSQL在何处处理 sql查询之三十四
查看>>
怎么设计一个好的数据库
查看>>
写自己的CSS框架 Part2:跨越浏览器的reset
查看>>
pycharm开发python 在python Console中输出的程序有乱码,含有中文的输出
查看>>