码迷,mamicode.com
首页 > 其他好文 > 详细

case when 和 decode 的比较分析

时间:2018-10-15 14:20:28      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:server   图片   ffffff   bsp   分享   活着   两种   数据   image   

一、case when

与 if - else 类似,语句如下:
CASE expr WHEN expr1 THEN return_expr1
         [WHEN expr2 THEN return_expr2
          ...
          WHEN exprn THEN return_exprn
          ELSE else_expr]
END

且有两种判断方法,case  字段  when  值    then  return 值

                                 else    return 值  end

例如:

select bname , price, case when price > =10 and price <20 then ‘price1‘      

when price > =20 and price <30 then ‘price2‘
when price >= 30 and price <40 then ‘price3‘

when price > =40 and price <50 then ‘price4‘

when price >= 50 and price <60 then ‘price5‘

else ‘price6‘ end "价格段"
from book;

技术分享图片

二、 decode (Oracle数据库独有)   

DECODE(col|expression, search1, result1
                       [, search2, result2,...,]
                        ...
                       [, searchn, resultn,...,]
                       [, default])

也可以和 sign函数一起使用 

也可以:decode(字段,判断条件,返回值1,返回值2)

select decode(sign(arg1-arg2),-1, arg1, arg2) from dual;

注:sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

   select price,decode(price,‘32.5‘,‘活着‘,‘其他‘ ) 书名 from  book;     

技术分享图片

三、比较

 1.DECODE 是Oracle特有的;

 2.CASE WHEN 是Oracle, SQL Server,MySQL 都可用;

 3.DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断;CASE可用于=,>=,<,<=,<>,is null,is not null 等的判断;

    4.DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活。

 

case when 和 decode 的比较分析

标签:server   图片   ffffff   bsp   分享   活着   两种   数据   image   

原文地址:https://www.cnblogs.com/sunkai625/p/9790004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!