浅析ORACLE中NVL/NVL2/DECODE/CASE WHEN的用法
使用NVL的时候只能对值进行是否为空的判断,基本语法是NVL( 值1, ,结果2)。它的功能是如果值1为空,则此函数返回结果2,不为空的话直接输出值1(如果两个参数都为空,那么还是返回空);
NVL2我理解为NVL的升级版,基本语法是NVL2(值1,结果3,结果2),多了一个结果3在中间,功能是当值1不为空的时候,此函数返回结果3,如果写成NVL2(值1,结果1,结果2),那么效果就等同于NVL(值1,结果2)了;
DECODE函数再次升级,基本表达式DECODE(值1,条件1,结果1,条件2,结果2,条件N,结果N.....,值X)。它的功能是当值1等于条件1的时候,输出结果1,等于条件2的时候,输出结果2,等于条件N的时候,输出结果N,所有条件值都不等的时候,输出值X。
CASE WHEN 基本功能与DECODE相似,不过比DECODE有着更复杂的条件判断,基本语法(CASE WHEN 值1=条件1 THEN 结果1,CASE WHEN 值2=条件2 THEN 结果2,CASE WHEN 值N=条件N THEN 结果N....ELSE 结果X END ),与DECODE不同的是,其中的条件值1=条件1可以改成其他判断条件,比如>=,<,<=,<>,is null,is not null 等的判断。因为这些条件有可能会出现值1同时符合多个条件的情况,所以在执行的时候,当值1符合条件1的时候,相应数据就会直接被取出,不会再往后执行判断。
以我个人的见解是,能用NVL就不用NVL2,能用NVL2就不用DECODE,能用DECODE就不用CASE WHEN。
此文章来自我之前的CSDN迁移而来,稍有完善修改。原文链接:https://blog.csdn.net/qq_17153527/article/details/80483972
浅析ORACLE中NVL/NVL2/DECODE/CASE WHEN的用法的更多相关文章
- oracle之nvl,nvl2,decode
oracle sql常用查询nvl,nvl2,decode区别及使用方法 1,NVL( E1, E2) 如果E1为NULL,则NVL函数返回E2的值,否则返回E1的值,如果两个参数都为NULL ,则返 ...
- oracle中nvl()函数
oracle中nvl()函数 oracle的nvl函数的使用方法 通过查询获得某个字段的合计值,假设这个值位null将给出一个预设的默认值 select nvl(sum(t.dwxhl),1) f ...
- oracle中的round()方法的用法
[oracle中的round()方法的用法] Round( ) 函数 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果 oracle一般常用于计算表空间内存还有多少空间 语法 ROUN ...
- oracle中nvl函数
最近在修改项目中一个统计的bug,统计出的钱数不对,因为不是自己开发的模块,经过分析流程找到了统计的sql. sum(f_msmoney)+sum(f_fkmoney) as total, 上面这段是 ...
- oracle通用函数,nvl,nvl2,NULLIF ,coalesce
Oracle 通用函数 ① NVL 函数--------将空值转换成一个已知的值: 可以使用的数据类型有日期.字符.数字. 函数的一般形式: NVL(commission_pct,0) ...
- Oracle中nvl()、instr()、及执行多条sql事务操作
Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpre ...
- 浅析Oracle中的不等于号
前几天碰到一个关于Oracle不等于的问题,最后搜索了一下,发现下面资料,拿来跟大家分享一下,需要的朋友可以参考下 关于Oracle中的不等于号: 在Oracle中, <> != ...
- oracle函数nvl,nvl2的区别,nullif函数,coalesce函数
在oracle中用nvl和nvl2函数来解决为空的情况,例如,如果奖金为空,则为它指定一个数.也就是nvl(奖金字段,指定的奖金),但是两个的类型要一致. 1)nvl()函数 SQL> sele ...
- 【Oracle】浅析Oracle中的事务
1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不 ...
随机推荐
- Windows系统调用中API从3环到0环(上)
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中API从3环到0环(上) 如果对API在三 ...
- Spring入门(五):Spring中bean的作用域
1. Spring中bean的多种作用域 在默认情况下,Spring应用上下文中所有的bean都是以单例(singleton)的形式创建的,即不管给定的一个bean被注入到其他bean多少次,每次所注 ...
- 1.7.3.1版本ride乱码的解决方法
现象: 解决方式: 修改文件\Python36\Lib\site-packages\robotide\contrib\testrunner\testrunner.py 将latin1修改为mbcs 然 ...
- 玩转u8g2 OLED库 MAX7219_32X8点阵模块
u8g2 OLED库 + MAX7219_32X8点阵模块 理论基础 玩转u8g2 OLED库,一篇就够 玩转u8g2 OLED库,一篇就够(字数太多 要分篇) 实验内容 Full screen bu ...
- NOIP2018货币系统
题目大意 给出一组数,求出其中共有多少数不能被其他数表示 解题思路 法一:可爱的动态规划 这个思路还是比较好想的(也比较好写?) 有依赖关系的背包,思路这道题是差不多的 填满型01背包 (关于代码) ...
- VBA 在第二个sheet中查找第一个sheet中不存在的值
VBA 在第二个sheet中查找第一个sheet中不存在的值 Sub Macro2() ' ' Macro2 Macro ' 宏由 Lizm 录制,时间: 2019/04/10 ' ' Dim ...
- 百万年薪python之路 -- 函数初始
1.函数 1.1 认识函数 定义一个事情或者是功能,等到需要的时候直接去用就好了.那么这里定义东西就是一个函数 函数:对代码块和功能的封装和定义 函数的好处: 减少代码的重复性 代码可读性高 将功能进 ...
- [Tarjan系列] Tarjan算法与有向图的SCC
前面的文章介绍了如何用Tarjan算法计算无向图中的e-DCC和v-DCC以及如何缩点. 本篇文章资料参考:李煜东<算法竞赛进阶指南> 这一篇我们讲如何用Tarjan算法求有向图的SCC( ...
- SpringBoot整合MybatisPlus3.X之SQL执行分析插件(十四)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- Java连接MySQL简单步骤及常见问题解析
这篇文章跟读者们介绍Java语言如何连接到MySQL数据库相关操作,及FAQ(Frequently Asked Questions)介绍. 选择工具和准备数据集 IDE:Eclipse 数据库:使用的 ...