Oracle的 nvl 函数及 nvl2 函数的应用

简介: Oracle的 nvl 函数及 nvl2 函数的应用

一、基本语法:

  • nvl 函数:

nvl 函数的基本语法为 nvl(E1, E2),如果E1为 NULL,则函数返回E2,否则返回E1本身。但此函数有一定局限,所以就有了nvl2函数。如果两个参数的值都为空值,则返回空值。

注意:第一个参数和第二个参数可以是任何类型的数据,但两个参数的数据类型必须相同(或能够由Oracle隐式转换为相同的类型)


nvl2 函数:

nvl2 函数的基本语法为 nvl2(E1, E2, E3),它是在nvl函数的功能上扩展的,如果E1为 NULL,则函数返回E3,若E1不为 NULL,则返回E2。


二、返回值类型

返回值类型可以为字符型、日期型、日期时间型、数值型、货币型、逻辑型或nul值。

三、说明

在不支持 null 值或 null 值无关紧要的情况下,可以使用 nvl() 函数来移去计算或操作中的 null 值。


select nvl(a.name,'为空想要返回的值') as name from test01 a join test02 b on a.id = b.id;

注意:两个参数得类型要匹配,必须为同一数据类型,除非显式的使用 TO_CHAR 函数。


四、应用场景

nvl() 函数比较常用的是这样的nvl(E1, 0),意思是E1参数查询到为null的情况,就返回 0,不为 null 就返回E1,常用于非空校验

nvl2() 函数的应用场景也比较多,常用于根据查询的值返回不同的结果。


例如1:查询性别。

select nvl2(gender, '男', '女') as sex from student;


例:2:用列转行函数 vm_concat 查询一个用户和他的账号显示为 用户名a(账号b)  效果。


假如b参数为空的情况就会出现“a()”的参数,而我想要的是b参数为空的情况,直接返回“a”参数,b参数不为空的情况才返回“a(b)”类型的数据,通过nvl2函数就可以很好的实现:

select to_char(wm_concat(nvl2(b, a || '(' || b || ')', a))) as 返回参数 from test01 where id = 1;
目录
相关文章
|
5月前
|
SQL Oracle 关系型数据库
Oracle之日期计算相关函数
Oracle之日期计算相关函数
45 0
|
4月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
38 0
|
4月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
68 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
13天前
|
Oracle 算法 关系型数据库
Oracle常用系统函数之数字类函数:数字的魔术师
【4月更文挑战第19天】Oracle数据库中的数字类函数是数字处理的魔术师,包括`ROUND`(四舍五入),`CEIL`和`FLOOR`(向上/下取整),以及`ABS`(计算绝对值)。还有`MOD`、`TRUNC`和`POWER`等函数,提供求余数、截断和计算幂的功能。熟练运用这些函数能提升数据管理效率,让处理数字变得更简单、有趣。
|
2月前
|
SQL Oracle 关系型数据库
oracle应用
oracle应用
8 0
|
3月前
|
Oracle 关系型数据库 Shell
oracle的基本应用,持续完善中...
oracle的基本应用,持续完善中...
|
3月前
|
SQL Oracle 关系型数据库
Oracle查询优化-聚集函数
【2月更文挑战第5天】【2月更文挑战第13篇】聚集函数
20 4
|
4月前
|
存储 SQL Java
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(一)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
35 0
|
4月前
|
SQL Oracle 关系型数据库
Oracle PL/SQL基础知识及应用案例
Oracle PL/SQL基础知识及应用案例
33 0
|
4月前
|
SQL Oracle 算法
Oracle函数
Oracle函数
98 1

推荐镜像

更多