NVL 函数从两个表达式返回一个非 NULL 值。如果 expr1 与 expr2 的结果皆为 NULL 值,则 NVL 函数返回 NULL

语法

NVL(expr1, expr2)

参数

参数

说明

expr1

表达式。数据类型可以是 OceanBase 内建数据类型 中的任何数据类型。

expr2

表达式。数据类型可以是 OceanBase 内建数据类型中的任何数据类型。

expr1 和 expr2 必须是相同类型,或者可以隐式转换为相同类型。如果它们不能隐式转换,则 OceanBase 返回错误。隐式转换实现如下:

  • 如果 expr1 是 CHARNCHARNVARCHARVARCHAR2 或 VARCHAR 字符型数据,则 OceanBase 在比较 expr1 之前将 expr2 转换为 expr1 的数据类型,并返回 expr1 字符集的 VARCHAR2

  • 如果 expr1 是 NUMBERFLOATBINARY_FLOAT 或 BINARY_DOUBLE 数值型数据,则 OceanBase 确定哪个参数具有最高的数字优先级,隐式地将另一个参数转换为该数据类型,并返回该数据类型。

返回类型

如果 expr1expr2 是 NULL,则返回 NULL。如果 expr1 是 CHARNCHARNVARCHARVARCHAR2 或 VARCHAR 字符型数据,则返回 expr1 字符集的 VARCHAR2。如果 expr1 是 NUMBERFLOATBINARY_FLOAT 或 BINARY_DOUBLE 数值型数据,则返回 expr1 中具有最高数字优先级的数据类型。

示例

假设有一张表 EMPLOYEES,给员工姓名列 name 和佣金列 commission_pct 里面插入数据,执行以下语句:

CREATE TABLE EMPLOYEES (name VARCHAR(20),commission_pct float(5));
INSERT INTO EMPLOYEEs VALUES ('Baer', null);
INSERT INTO EMPLOYEEs VALUES ('Bada', null);
INSERT INTO EMPLOYEEs VALUES ('Boll', 0.1);
INSERT INTO EMPLOYEEs VALUES ('Bates', 0.15);
INSERT INTO EMPLOYEEs VALUES ('Eric', null);

查询员工的姓名和佣金,如果员工没有收到佣金,则显示 Not Applicable。执行以下语句:

SELECT name, NVL(TO_CHAR(commission_pct), 'Not Applicable') commission 
FROM employees WHERE name LIKE 'B%' ORDER BY name;

查询结果如下:

+--------------+----------------+
|        NAME  |     COMMISSION |
+--------------+----------------+
|        Baer  | Not Applicable |
+--------------+----------------+
|        Bada  | Not Applicable |
+--------------+----------------+
|        Boll  |             .1 |
+--------------+----------------+
|       Bates  |            .15 |
+--------------+----------------+
andy

前端小白,在Web176教程网这个平台跟大家一起学习,加油!

Share
Published by
andy

Recent Posts

vue:页面注入js修改input值

一般会直接这样写: let z…

5 小时 ago

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago