【mysql】ISNULL、NVL、IFNULL和COALESCE函数的使用方法

以下是 ISNULL、NVL、IFNULL 和 COALESCE 函数的详细使用方法:

1. ISNULL

SQL Server 和 Sybase 使用 ISNULL 函数来处理空值。

语法:

sql 复制代码
ISNULL(expression, replacement_value)

参数:

  • expression:要检查的表达式。
  • replacement_value:如果 expression 为 NULL,则返回的值。

示例:

sql 复制代码
-- SQL Server
SELECT ISNULL(NULL, 'Default Value') AS Result; -- 返回 'Default Value'
SELECT ISNULL((SELECT ColumnName FROM TableName WHERE Condition), 'Default Value') AS Result;

2. NVL

Oracle 使用 NVL 函数来处理空值。

语法:

sql 复制代码
NVL(expression, replacement_value)

参数:

  • expression:要检查的表达式。
  • replacement_value:如果 expression 为 NULL,则返回的值。

示例:

sql 复制代码
-- Oracle
SELECT NVL(NULL, 'Default Value') FROM DUAL; -- 返回 'Default Value'
SELECT NVL((SELECT ColumnName FROM TableName WHERE Condition), 'Default Value') FROM DUAL;

3. IFNULL

MySQL 和 MariaDB 使用 IFNULL 函数来处理空值。

语法:

sql 复制代码
IFNULL(expression, replacement_value)

参数:

  • expression:要检查的表达式。
  • replacement_value:如果 expression 为 NULL,则返回的值。

示例:

sql 复制代码
-- MySQL
SELECT IFNULL(NULL, 'Default Value') AS Result; -- 返回 'Default Value'
SELECT IFNULL((SELECT ColumnName FROM TableName WHERE Condition), 'Default Value') AS Result;

4. COALESCE

SQL Server 、PostgreSQL 、Oracle 、MySQL 和 MariaDB 等许多数据库系统都支持 COALESCE 函数。

语法:

sql 复制代码
COALESCE(expression1, expression2, ...)

参数:

  • expression1, expression2, ...:要检查的表达式列表。

返回值:

  • 返回参数列表中第一个非 NULL 值。如果所有参数都是 NULL,则返回 NULL。

示例:

sql 复制代码
-- SQL Server
select COALESCE (null,'100','120'); -- 返回 '100'

select COALESCE (null,'110',null,'120'); -- 返回 '110'

SELECT COALESCE(NULL, 'Second', 'Third') AS Result; -- 返回 'Second'
SELECT COALESCE((SELECT ColumnName1 FROM TableName WHERE Condition1), 'Second', 'Third') AS Result;

-- Oracle
SELECT COALESCE(NULL, 'Second', 'Third') FROM DUAL; -- 返回 'Second'
SELECT COALESCE((SELECT ColumnName1 FROM TableName WHERE Condition1), 'Second', 'Third') FROM DUAL;

-- MySQL
SELECT COALESCE(NULL, 'Second', 'Third') AS Result; -- 返回 'Second'
SELECT COALESCE((SELECT ColumnName1 FROM TableName WHERE Condition1), 'Second', 'Third') AS Result;

-- PostgreSQL
SELECT COALESCE(NULL, 'Second', 'Third') AS Result; -- 返回 'Second'
SELECT COALESCE((SELECT ColumnName1 FROM TableName WHERE Condition1), 'Second', 'Third') AS Result;

总结

  • ISNULL 用于 SQL Server 和 Sybase。
  • NVL 用于 Oracle。
  • IFNULL 用于 MySQL 和 MariaDB。
  • COALESCE 用于 SQL Server 、PostgreSQL 、Oracle 、MySQL 和 MariaDB。

这些函数的主要目的是处理空值,确保查询结果的准确性和一致性。

相关推荐
葡萄城技术团队21 分钟前
数据库里的数据明明是对的,为什么 BI 报表还是错?
数据库
野生数据人22 分钟前
日志平台每日巡检我压成了一条命令链:从 SHOW BACKENDS 到扩缩容的完整步骤
大数据·数据库
bmxy小明同学42 分钟前
2026-10-09-token与成本
java·前端·数据库
路远的数据库笔记43 分钟前
Oracle报ORA-00020连接打满?从专用进程模型到静态参数,一次生产排查全记录
数据库·oracle·国产数据库·ora-00020·dba实战·sharedserver
瀚高PG实验室1 小时前
瀚高数据库序列介绍、使用及值不连续、重复写入等现象处理
数据库·postgresql·瀚高数据库
这个DBA有点耶1 小时前
PostgreSQL HOT更新:频繁更新表的索引膨胀根因与fillfactor调优
数据库·sql·postgresql
野生数据人1 小时前
日志平台运维速查表:巡检命令、阈值、参数,一张贴墙
大数据·数据库
数据库小学妹1 小时前
向量检索最小可运行实现:HNSW索引参数与召回率/延迟权衡
数据库·后端
发量惊人的中年网工1 小时前
SD-WAN 组网方案怎么选?跨地域与多分支企业的选型指南(含成本对比)
服务器·网络·数据库
xiaogai_gai2 小时前
物料主数据从ERP同步到电商中台:基于轻易云的编码映射与增量全量双轨实践
大数据·数据库