关于三目运算实例

平时在项目中常用到三目运算法,因为简单的if,else 可以用三目运算来替代,这样可以减少很多代码量,今天有个同事在sql中遇到类似情况,想通过最简洁的代码来过滤,百度了一下,发现sql中有类似三目运算的情况,跟酱油爷说的case when差不多,记录下来以备以后不时之需:

类似三目运算的sql:

  select * from T_Op_ClassLearnerMapping where type in
 (
  Case
     WHEN type=1 THEN '1' ELSE '2'
  END
  )
  order by Type desc

 

case  when还有一种用法,就是直接在数据库中转换,在页面显示别名,

比如有个字段是type类型,每个值代表不同含义,就可以直接通过case when来显示中文,这种方式比较简便

 select *,type=Case
            WHEN type=1 THEN '学员'
            WHEN type=2 THEN '客户'
            WHEN type=3 THEN '教师'
            ELSE 'null'
           END

from T_Op_ClassLearnerMapping

 

PS,我在园子提的问题,各位大神提供的方式:

有对数据库很精通,有对三目运算很精通的么?eg: var a=""; var b=a==""?True:False; 我想问一下,在数据库中sql有类似的判断吗?

酱油兴爷:我记得oracle的。 case when a=b and a is null then 'true' else 'false' end resault.

路过秋天:有isnull(条件,true则值A,false则值B) 具体去扫一下数据库类型提供什么就用什么

青 蛙:如果判断是否为空取不同值则有nvl和nvl2两个函数,多个值做相应转换可用decode。比较复杂的再用case when         

PPS:秋天跟青蛙说的函数我都没用过,所以先记着~~呵呵,不管怎样,还是很谢谢他们的回答      

转载于:https://www.cnblogs.com/sunny0515/p/3293262.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值