`
sangei
  • 浏览: 328680 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

decode函数与case语句

阅读更多

首先,举2个简单的例子,简单对比一下这2者的区别。
1.CASE语句:
SELECT CASE SIGN(5 - 5)
            WHEN 1  THEN        'Is Positive'
            WHEN -1  THEN    'Is Negative'
            ELSE    'Is Zero'   END
FROM   DUAL;
后台实现:
if (SIGN(5  5) = 1) {
'Is Positive';
} else if (SIGN(5  5) = 2 ) {
'Is Negative';
}else {
‘Is Zero
}
   
2. Decode函数:
SELECT DECODE(SIGN(5  5), 1, 'Is Positive', -1, 'Is Negative', Is Zero)
FROM DUAL
后台实现:
switch ( SIGN(5  5) )
 {
   case 1 :  'Is Positive';  break;
   case 2 :  'Is Negative'; break;
   default :  Is Zero
}
 
在上面的例子中,2者似乎都可以实现。但是,在遇到特殊的问题时,Decode()要实现起来就相当复杂了。
例如:
SELECT CASE X-FIELD
    WHEN  X-FIELD < 40  THEN X-FIELD < 40
    WHEN  X-FIELD < 50  THEN X-FIELD < 50
    WHEN  X-FIELD < 60  THEN X-FIELD < 60
    ELSE UNBEKNOWNEND
FROM DUAL
因此,我个人认为,CASE语句在处理类似问题就显得非常灵活。当只是需要匹配少量数值时,用Decode更为简洁。

分享到:
评论

相关推荐

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

    本文讲述了Oracle-Decode()函数和CASE语句的比较。

    Oracle高级sql学习与练习

    6、DECODE函数和行列互换 7、CASE表达式 8、ROWNUM-TOP-N分析 9、相关子查询和非相关子查询 10、增强GROUP BY 11、分析函数(ANALYTICAL FUNCTIONS) 12、ROWID的使用 13、ORACLE 10G正则表达式 14、使用HINT 15、...

    Oracle的列转行问题

    网络上流传了很多将行数据转换称列数据的方法和应用实例,一般通过decode或者case函数与聚合函数联合实现功能,这里就不再重复。 日前本人在一个偶然的应用中用到了一个需要将列数据转换为行数据的问题。搜索了很久...

    Oracle_Database_11g完全参考手册.part2

    原书名: Oracle Database 11g The Complete Reference 原出版社: McGraw-Hill Osborne Media ... 第16章 decode 和case:sql中的if-then-else  第17章 创建和管理表、视图、索引、群集和序列  第18章 分区

    oracle常用知识

    多年来的一点oracle知识积累decode替代case,Drop含有特殊字符的表,Oracle的物化视图的建立方法,动态查询语句返回结果集,利用ORACLE的MINUS函数和OVER函数,直接通过视图实现两个记录集的比较,在oracle中生成...

    Oracle_Database_11g完全参考手册.part3

    基本信息 原书名: Oracle Database 11g The Complete Reference 原出版社: McGraw-Hill Osborne ... 第16章 decode 和case:sql中的if-then-else  第17章 创建和管理表、视图、索引、群集和序列  第18章 分区

    Oracle_Database_11g完全参考手册.part5

    原书名: Oracle Database 11g The Complete Reference 原出版社: McGraw-Hill Osborne Media ... 第16章 decode 和case:sql中的if-then-else  第17章 创建和管理表、视图、索引、群集和序列  第18章 分区

    Oracle_Database_11g完全参考手册.part4

    原书名: Oracle Database 11g The Complete Reference 原出版社: McGraw-Hill Osborne Media ... 第16章 decode 和case:sql中的if-then-else  第17章 创建和管理表、视图、索引、群集和序列  第18章 分区

    racle_Database_11g完全参考手册.part1

    原书名: Oracle Database 11g The Complete Reference 原出版社: McGraw-Hill Osborne Media ... 第16章 decode 和case:sql中的if-then-else  第17章 创建和管理表、视图、索引、群集和序列  第18章 分区

    Oracle_Database_11g完全参考手册.part3/3

    第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 分区 第19章 Oracle基本安全 第Ⅲ部分 高级主题 第20章 高级安全性-虚拟专用数据库 第21章 高级安全性:透明数据加密...

    Oracle_Database_11g完全参考手册.part2/3

    第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 分区 第19章 Oracle基本安全 第Ⅲ部分 高级主题 第20章 高级安全性-虚拟专用数据库 第21章 高级安全性:透明数据加密...

    javascript入门笔记

    2、函数的声明与调用 1、普通函数 语法: function 函数名(){ 语句块; } 调用:在JS中任何的合法位置处,都可以通过 函数名() 的方式进行调用 练习: 1、声明一个函数,名称为 change 2、在函数中 1、...

    Oracle事例

    字符串字段中含有\"\'\",如果用来组合sql语句,会造成语句不准确。 比如:replace(f1,\'\'\'\',\'\') &lt;2&gt;.字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,...

    SQL培训第一期

    1.2 语句结构 1.2.1 数据查询语言(DQL) 对数据库进行的信息查询,select。 1.2.2 数据操作语言(DML) 用于操作关系型数据库对象内部的数据,insert、update、delete。 1.2.3 数据定义语言(DDL) 用来建立及定义...

    C#编程经验技巧宝典

    16 &lt;br&gt;0033 Return语句的使用 17 &lt;br&gt;0034 如何实现无限循环 17 &lt;br&gt;0035 巧用foreach语句控制控件 18 &lt;br&gt;0036 有效使用switch case语句 18 &lt;br&gt;2.3 运算符 19 &lt;br&gt;0037 如何使用...

Global site tag (gtag.js) - Google Analytics