如何正确使用case when表达式 和 decode函数?

相信很多小伙伴在开发过程中都有用到case when表达式和decode函数,那么会不会有小伙伴和我一样刚开始有很多疑虑,什么情况下用case when,什么情况下用decode呢?两者有什么区别呢?今天小编就带大家细分一下两者的区别:

case when表达式不仅可以等值连接还可以范围判断;decode函数可以等值连接。

这样说大家可能不能理解,举个例子吧,如下;
创建一张表tmp1,列为dept表示部门信息,分别有10,20,30,40,50部门:
![](https://s1.51cto.com/images/blog/201905/29/120a4ff64fb1d8859ddad5488d15d82b.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

用case when表达式判断,如果部门信息为10,则判断为A,部门信息为20,则判断为B,其他部门信息判断为C:
select case when dept = 10 then ‘A‘
when dept = 20 then ‘B‘
else ‘C‘
from tmp1;
或者:
select case dept when 10 then ‘A‘
when 20 then ‘B‘
else ‘C‘
from tmp1;
用decode函数判断,如果部门信息为10,则判断为A,部门信息为20,则判断为B,其他部门信息判断为C:
select decode(dept,10,‘A‘,20,‘B‘,‘C‘) from tmp1;

而如果想判断部门信息为10或20时,判断为‘A‘,部门信息为30或40时,判断为‘B‘,其他则判断为‘C‘。这时只能用case when表达式:
select case when dept between 10 and 20 then ‘A‘
when dept between 30 and 40 then ‘B‘
else ‘C‘
end
from tmp1;

注:这时sql不能再写为
select case dept when between 10 and 20 then ‘A‘
when between 30 and 40 then ‘B‘
else ‘C‘
end
from tmp1;
这时会报错: ORA-00936:缺失表达式

本篇文章已经结束了,你学会了吗?如若还有疑问,可留言给小编,看到必回复!

原文地址:https://blog.51cto.com/12777507/2401978

时间: 2024-10-19 14:39:39

如何正确使用case when表达式 和 decode函数?的相关文章

T-SQL的基础:超越基础6级:使用CASE表达式和IIF函数

                                                                                                                                                          T-SQL的基础:超越基础6级:使用CASE表达式和IIF函数                                                                 

第九周翻译:使用CASE表达式和IIF函数

通往t - sql的阶梯:超越基本级别6:使用CASE表达式和IIF函数    在2016年4月20日被Gregory Larsen所创作,第一次出版于2014年4月9日. 这一系列: 这篇文章是阶梯系列的一部分:楼梯T-SQL:超越基础 下面就从他的楼梯T-SQL DML.Gregory Larsen覆盖的T-SQL语言如子查询更先进的方面. 很多时候,你需要写一个TSQL语句,能够返回基于另一个表达的评价不同的TSQL表达式.当你需要这种功能,你可以使用CASE表达式或IIF函数满足这个要求

楼梯T-SQL:超越基础6级:使用CASE表达式和IIF函数

从他的楼梯到T-SQL DML,Gregory Larsen涵盖了更多的高级方面的T-SQL语言,如子查询. 有时您需要编写一个可以根据另一个表达式的评估返回不同的TSQL表达式的单个TSQL语句.当您需要这种功能时,您可以使用CASE表达式或IIF函数来满足此要求.在本文中,我将回顾CASE和IIF语法,并向您展示CASE表达式和IIF函数的示例. 了解CASE表达Transact-SQL CASE表达式允许您在TSQL代码中放置条件逻辑.此条件逻辑为您提供了一种在TSQL语句中放置不同代码块

通往t - sql的阶梯:超越基本级别6:使用CASE表达式和IIF函数

摘要:此文章转自: http://www.sqlservercentral.com/articles/Stairway+Series/108723/ Stairway to T-SQL: Beyond The Basics Level 6: Using the CASE Expression and IIF Function 通往t - sql的阶梯:超越基本级别6:使用CASE表达式和IIF函数 By Gregory Larsen, 2016/04/20 (first published: 2

Oracle 中 decode 函数用法(转)

含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETURN(翻译值2) ...... ELSIF 条件=值n THEN RETURN(翻译值n) ELSE RETURN(缺省值) END IF decode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3 当然值1,

oracle decode函数使用方法

DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%:工资在8000元以上的加15%,通常的做法是,先选出记录 中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或cho

oracle decode函数用法

DECODE函数是ORACLE PL/SQL是功能强大的函数之中的一个,眼下还仅仅有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一个样例,如果我们想给智星职员加工资,其标准是:工资在8000元下面的将加20%:工资在8000元以上的加15%.通常的做法是.先选出记录 中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else

转载-Oracle ORACLE的sign函数和DECODE函数

原文地址:http://www.cnblogs.com/BetterWF/archive/2012/06/12/2545829.html 转载以备用 比较大小函数 sign 函数语法:sign(n) 函数说明:取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 示例:一.select sign( 100 ),sign(- 100 ),sign( 0 ) from dual; SIGN(100) SIGN(-100) SIGN(0) ---- ---- ---- 1 -1 0 二.a=10

Oracle自我补充之Decode()函数使用介绍

decode()函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能. DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%:工资在8000元以上的加15%,通常的做法是,先选出记录 中的工资字