当前位置: 首页 > ai >正文

[Oracle] NVL()函数

NVL() 是 Oracle 中处理 NULL 值的函数,它用于将 NULL 值替换为指定的默认值

NVL()函数的主要功能是检查第一个表达式是否为 NULL,如果为 NULL,则返回第二个参数(默认值),如果不为 NULL,则返回第一个表达式的值

语法格式

NVL(expression, default_value)

参数说明
expression:要检查的表达式(可以是列、计算值或函数结果)
default_value:当 expression 为 NULL 时要返回的值(必须与 expression 数据类型兼容)

示例

-- 处理数值型NULL值
SELECT NVL(salary, 0) FROM employees;  -- 如果salary为NULL,返回0;否则返回salary值-- 处理字符型NULL值
SELECT NVL(department_name, '未分配部门') FROM departments;  -- 如果department_name为NULL,返回'未分配部门'-- 处理日期型NULL值
SELECT NVL(end_date, TO_DATE('9999-12-31', 'YYYY-MM-DD')) FROM job_history;  -- 如果end_date为NULL,返回一个未来日期-- 计算员工总薪资(处理可能为NULL的奖金)
SELECT employee_id, salary + (salary * NVL(commission_pct, 0)) AS total_compensation
FROM employees;-- 生成销售报表,替换NULL值为可读文本
SELECT product_id,product_name,NVL(TO_CHAR(standard_cost), '成本未设定') AS cost,NVL(TO_CHAR(list_price), '价格未设定') AS price
FROM products;
-- 错误示例(类型不匹配)
SELECT NVL(hire_date, '无日期') FROM employees;  -- 错误:字符与日期不匹配-- 正确做法
SELECT NVL(TO_CHAR(hire_date), '无日期') FROM employees;

提示Tips:默认值必须与表达式数据类型兼容,保持一致性

NVL()函数与聚合函数结合使用

-- 计算部门平均薪资(处理部门无员工的情况)
SELECT d.department_id,d.department_name,NVL(AVG(e.salary), 0) AS avg_salary
FROM departments d
LEFT JOIN employees e 
ON d.department_id = e.department_id
GROUP BY d.department_id, d.department_name;

NVL()函数与UPDATE语句结合使用

-- 将NULL的库存量更新为0
UPDATE inventory
SET stock_quantity = NVL(stock_quantity, 0)
WHERE stock_quantity IS NULL;

NVL()函数与CASE表达式结合使用

SELECT employee_id,CASE WHEN NVL(commission_pct, 0) > 0.2 THEN '高佣金'WHEN NVL(commission_pct, 0) > 0.1 THEN '中等佣金'ELSE '低佣金或无佣金'END AS commission_level
FROM employees;

补充扩展知识:NVL2()函数

NVL2(expression1, expression2, expression3)

若expression1值不为 NULL,则该函数返回expression2的值;
若expression1值为 NULL,则该函数返回expression3的值;
若expression1、expression2、expression3的值均为 NULL,则该函数返回 NULL

http://www.xdnf.cn/news/17108.html

相关文章:

  • 测试单节点elasticsearch配置存储压缩后的比率
  • 河南萌新联赛2025第(四)场【补题】
  • 8月6日星期三今日早报简报微语报早读
  • JAVA无人系统台球茶室棋牌室系统支持H5小程序APP公众号源码
  • 基于跨境电商场景的智能商品管理系统,采用Bootstrap+Django+MySQL技术架构,实现用户行为追踪、智能推荐、多维度商品展示等核心功能
  • 8、项目管理
  • JAVA 程序员cursor 和idea 结合编程
  • Solidity 编程进阶
  • 8.6 JavaWeb(请求响应 P67-P74)
  • PyTorch入门引导
  • Go语言“fmt”包详解
  • 【Linux内核系列】:信号(上)
  • Docker的安装,服务器与客户端之间的通信
  • LeetCode每日一题,8-6
  • springboot项目justAuth扩展第二个小程序
  • Unity轻量观察相机
  • 功能安全和网络安全的综合保障流程
  • 云端软件工程智能代理:任务委托与自动化实践全解
  • CDP集群中通过Hive外部表迁移HBase数据的操作记录
  • 昇思+昇腾开发板+DeepSeek模型推理和性能优化
  • 自己本地搭建的服务器怎么接公网?公网IP直连服务器方法,和只有内网IP直接映射到互联网
  • 线性代数中矩阵的基本运算运算
  • 哲学中的主体性:历史演进、理论范式与当代重构
  • FLAN-T5:大规模指令微调的统一语言模型框架
  • python-自定义抠图
  • OpenSpeedy绿色免费版下载,提升下载速度,网盘下载速度等游戏变速工具
  • Datawhale AI夏令营 第三期 task2 稍微改进
  • MyBatis实现SQL
  • Python日志记录库——logaid
  • Centos-Stream 10 安装教程(2025版图文教程)