sql中两种情况判断(if函数)、多种情况判断(case .. when...)

原地址:https://segmentfault.com/a/1190000009676728

sum(if(actual_num>0, share_post,0))

其中SUM的意思浅显易懂,求和嘛。IF也十分清晰:判断嘛。而且if的第一个参数很明显就是条件,那另外两个参数是什么呢?
查了一下资料:
语法:IF(expr1,expr2,expr3)
其中,expr1是判断条件,expr2和expr3是符合expr1的自定义的返回结果。
用处:当从数据库中查询出来的结果需要转换成中文或是其他自定义的格式显示在网页上的时候,可以直接在sql中处理

咳咳,看懂了么?第二个参数和第三个参数是结果。。。那用哪个呢?
简单通俗的解释是这样的:
if(a,b,c)如果a成立,执行b,不成立执行C
好吧,其实就是这么简单。
所以,图片中的这个语句意思就是:如果actual_num>0的话,就求share_post的和,否则就是0(其实是对0求和,还是0)
我们可以看出,如果数据表中的某个字段只有两种情况,可以使用if函数。

扩展:

上面说如果数据表中的某个字段只有两种情况,可以使用if函数,那多余两种情况呢?
在查资料的时候我看到了一个大神的分享:
如果数据表中的某字段多余两种情况时,可以使用case...when
举例如下:

select  
case   
when oi.order_type_id='SALE' then '销售'  
when oi.order_type_id='PURCHASE' then '采购'  
end as 订单类型   
from order_info as oi; 

然后在结果集中取出字段名为‘订单类型’的数据即可。
我们一般的习惯都是在数据库查出来字段,然后在代码中处理数据的显示,但是这样做比较麻烦,使用case...when的方法可以直接显示我们所要的。可以直接在sql语句中操作,将从数据库中查询出来的信息不要直接放入结果集中,而是将这些信息转换成页面需要显示的数据后再存入结果集中。(当然,完全看个人习惯,拿出来处理也是可取的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值