SQL语法 NVL,COALESCE

发布时间:2026/7/29 22:33:46
SQL语法 NVL,COALESCE nvlNVL(expr1,expr2)如果 expr1 为 NULL返回 expr2。如果 expr1 不为 NULL返回 expr1。如果两个参数都为 NULL则返回 NULLSELECTemployee_name,salary,NVL(commission_pct,0)AScommission_pct,-- 如果没有提成按0计算salaryNVL(commission_pct,0)AStotal_salary-- 为数值字段提供默认值防止计算报错FROMemployees;SELECTcustomer_name,NVL(phone_number,未填写)AScontact_info-- 提供一个默认值FROMcustomers;SELECTNVL(SUM(salary),0)AStotal_salaryFROMemployeesWHEREdepartment_id999;-- 假设999部门不存在SUM会返回NULLNVL将其转为0NVL 是 Oracle 数据库的专有函数最佳实践建议与 DECODE 类似如果你希望你的 SQL 代码具备跨数据库兼容性强烈建议使用 ANSI SQL 标准函数 COALESCE 来替代 NVL。COALESCE 不仅能在所有主流数据库中通用而且支持传入多个参数COALESCE(val1, val2, val3…)按顺序返回第一个非空值功能比 NVL 更强大COALESCECOALESCE(expression1,expression2,...,expressionN)按顺序评估传入的参数列表并返回第一个非 NULL非空的值。 如果所有的参数都为 NULL则返回 NULL。强烈建议把所有的 NVL 替换为 COALESCE