Oracle Decode()函数和CASE语句的比较

数据库 Oracle
Oracle中的Decode()函数和CASE语句究竟有何区别呢?下文将为您举例说明二者的区别,希望对您学习Oracle数据库能有所帮助。

Oracle Decode()函数和CASE语句都是我们经常用到的,那么它们的区别在哪里呢?下面就为您详细介绍Oracle Decode()函数和CASE语句的区别,供您参考。 

首先,举2个简单的例子,简单对比一下这2者的区别。

1.CASE语句:

  1. SELECT CASE SIGN(5 - 5)  
  2. WHEN 1 THEN 'Is Positive'  
  3. WHEN -1 THEN 'Is Negative'  
  4. ELSE 'Is Zero' END  
  5. FROM DUAL; 

后台实现:

  1. if (SIGN(5 – 5) = 1) {  
  2. 'Is Positive';  
  3. } else if (SIGN(5 – 5) = 2 ) {  
  4. 'Is Negative';  
  5. }else {  
  6. ‘Is Zero’  

2. Decode函数:

  1. SELECT DECODE(SIGN(5 – 5), 1,   
  2. 'Is Positive', -1, 'Is Negative', ‘Is Zero’)  
  3. FROMDUAL 

后台实现:

  1. switch ( SIGN(5 – 5) )  
  2. {  
  3. case 1 : 'Is Positive'; break;  
  4. case 2 : 'Is Negative'; break;  
  5. default : ‘Is Zero’  

在上面的例子中,2者似乎都可以实现。但是,在碰到非凡的问题时Decode()要实现起来就相当复杂了。
例如:

  1. SELECT CASE X-FIELD   
  2. WHEN X-FIELD < 40 THEN ‘X-FIELD < 40’  
  3. WHEN X-FIELD < 50 THEN ‘X-FIELD < 50’  
  4. WHEN X-FIELD < 60 THEN ‘X-FIELD < 60’  
  5. ELSE ‘UNBEKNOWN’END  
  6. FROM DUAL 

因此,个人认为,CASE语句在处理类似问题就显得非常灵活。当只是需要匹配少量数值时,用Decode更为简洁。

 

 

【编辑推荐】

Oracle case语句语法简介

Oracle循环语句的写法

Oracle修改用户语法介绍

Oracle身份验证的三种方法

Oracle默认用户的密码问题

责任编辑:段燃 来源: 互联网
相关推荐

2015-07-22 12:42:36

Pivot行列转换

2010-11-18 13:09:19

Oracle case

2010-04-27 12:51:49

Oracle 函数de

2010-05-10 18:22:28

Oracle deco

2010-10-25 17:00:40

Oracle deco

2010-11-04 11:45:10

Oracle DECO

2010-04-01 09:56:44

Oracle DECO

2010-04-28 16:53:20

Oracle 函数

2010-09-07 08:35:40

DB2常用函数

2010-04-26 16:51:11

Oracle Deco

2011-08-30 17:33:10

OracleSAS宏

2011-09-01 10:09:31

OracleDECODE常用窗口函数

2011-08-15 17:15:45

CASE语句Oracle给指定字段赋值

2011-08-11 17:56:00

Oracle数据库decodesign

2010-04-28 16:30:52

Oracle case

2009-06-08 21:45:46

Javaswitch-case

2010-09-06 16:40:52

SQL函数

2010-04-30 11:41:39

Oracle常用函数

2013-04-16 10:24:33

函数偏函数编程语言

2010-10-08 15:54:34

mysql中case
点赞
收藏

51CTO技术栈公众号