case when 和 decode 的比较分析

一、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 虽然复杂但更为灵活。

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

时间: 2024-10-14 01:04:19

case when 和 decode 的比较分析的相关文章

case...when...和decode——oracle

1.decode函数: 用法:decode(条件,值1,翻译1,值2,翻译2,......,缺省值): 例子: select t1.*,decode(t1.status,'0','成功','1','失败','未知') from table t1;--改变字段的显示值 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值(sign(x)符号函数.若x>0,则返回1;若x=0,则返回0;若x<0,则返回-1.) 2.case...whe

Oracle的case when 和decode

case when:参考:https://www.cnblogs.com/zqyanywn/p/5854079.html decode参考:https://blog.csdn.net/sdut406/article/details/82795585 原文地址:https://www.cnblogs.com/YLQBL/p/11359704.html

case 函数语法与使用

case 函数是聚合函数的一种,为统计函数. case表达式: CASE selector WHEN value1 THEN action1; WHEN value2 THEN action2; WHEN value3 THEN action3 一.CASE WHEN 表达式有两种形式 (1)简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END (2)Case搜索函数 CASE WHEN sex = '1' THE

rocketmq源码分析4-事务消息实现原理

为什么消息要具备事务能力 参见还是比较清晰的.简单的说 就是在你业务逻辑过程中,需要发送一条消息给订阅消息的人,但是期望是 此逻辑过程完全成功完成之后才能使订阅者收到消息.业务逻辑过程 假设是这样的:逻辑部分a-->发消息给MQ-->逻辑部分b假设我们在发送消息给MQ之后执行逻辑部分b时产生了异常,那如果MQ不具备事务消息能力时,订阅者也收到了消息.这是我们不希望见到的. 分布式事务基础概念 关于分布式事务.两阶段提交协议.三阶提交协议 理解分布式事务的两阶段提交2pc 分布式事务(一)两阶段

oracle decode函数的用法

oracle decode函数,不管查询的结果是否满足'PRIMARY',参数中的select语句还是会执行的,通过查看执行计划就知道 set autotrace traceonly select decode(database_role ,'PRIMARY', (select trunc((size_MB-free_MB)*100/maxsize_MB) "retvalue" from ( select tablespace_name,case when sum(decode(aut

Akka源码分析-Remote-发消息

上一篇博客我们介绍了remote模式下Actor的创建,其实与local的创建并没有太大区别,一般情况下还是使用LocalActorRef创建了Actor.那么发消息是否意味着也是相同的呢? 既然actorOf还是委托给了LocalActorRef,那么在本地创建的Actor发消息还是跟以前一样的,那么如果如何给远程的Actor发消息呢?我们一般是通过actorSelection或者给远程Actor发送一个Identify消息,来接收对应的ActorRef,然后再发消息.我们来分析一下这两者的区

sql优化(oracle)- 第二部分 常用sql用法和注意事项

第二部分 常用sql用法和注意事项               1. exists 和 in                             2. union 和 union all                       3. with as  4. order by  5. group by  6. where 和 having  7. case when 和 decode 1.exits和in用法1)说明: 1. exists先对外表做循环,每次循环对内表查询:in将内表和外表

sql优化(oracle)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! sql优化(oracle) 目录 第一部分知识准备                            第二部分 常用sql用法和注意事项                                第三部分  sql优化总结 1.  sql执行过程  1. exists 和 in                                                      1. 优化一般原则 2.  sql 共享

dba常用的sql

大牛dba用到的34条SQL语句 1.检查无效的数据文件 Select * from v$data_file; 2.执行失败或中断的Jobs select job, to_char(last_date,'yyyy-mm-dd hh24:mi:ss') "Last Date", to_char(this_date,'yyyy-mm-dd hh24:mi:ss') "This Date", broken,failures, schema_user, what from