黑妞与白胖
愿得一人心,白首不相离!

平时在项目中常用到三目运算法,因为简单的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:秋天跟青蛙说的函数我都没用过,所以先记着~~呵呵,不管怎样,还是很谢谢他们的回答      

posted on 2013-08-31 16:42  慢阳阳  阅读(4148)  评论(0编辑  收藏  举报