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;
目录
相关文章
|
20天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
135 64
|
7天前
|
SQL Oracle 关系型数据库
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
本文介绍了多种SQL内置函数,包括单行函数、非空判断函数、日期函数和正则表达式相关函数。每种函数都有详细的参数说明和使用示例,帮助读者更好地理解和应用这些函数。文章强调了字符串操作、数值处理、日期计算和正则表达式的使用方法,并提供了丰富的示例代码。作者建议读者通过自测来巩固学习成果。
11 1
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
|
4月前
|
存储 Oracle 关系型数据库
关系型数据库Oracle应用场景
【7月更文挑战第5天】
141 3
|
4月前
|
SQL Oracle 算法
|
1月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
45 3
|
4月前
|
Oracle 关系型数据库 数据处理
|
4月前
|
SQL Oracle 关系型数据库
|
4月前
|
人工智能 Oracle 关系型数据库
Oracle数据库在哪些新兴领域有应用?
【7月更文挑战第21天】Oracle数据库在哪些新兴领域有应用?
122 1
|
4月前
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
4月前
|
Oracle 关系型数据库 数据挖掘