1. NVL
函数
用于将 NULL
值替换为指定的默认值。
sql
NVL(expression, replacement_value)
- 示例:
sql
SELECT NVL(column_name, '默认值') FROM table_name;
如果column_name
为NULL
,则返回'默认值'
;否则返回column_name
的实际值。
2. NVL2
函数
根据表达式是否为 NULL
,返回不同的值。
sql
NVL2(expression, not_null_value, null_value)
- 示例:
sql
SELECT NVL2(column_name, '非空值', '空值') FROM table_name;
如果column_name
不为NULL
,则返回'非空值'
;否则返回'空值'
。
3. COALESCE
函数
返回参数列表中的第一个非 NULL
值。
sql
COALESCE(value1, value2, ..., value_n)
- 示例:
sql
SELECT COALESCE(column1, column2, '默认值') FROM table_name;
依次检查column1
、column2
,返回第一个非NULL
的值;如果都为NULL
,则返回'默认值'
。
4. NULLIF
函数
比较两个表达式,如果相等则返回 NULL
,否则返回第一个表达式的值。
sql
NULLIF(expression1, expression2)
- 示例:
sql
SELECT NULLIF(column_name, '无效值') FROM table_name;
如果column_name
的值等于'无效值'
,则返回NULL
;否则返回column_name
的实际值。
示例对比
假设有表 employees
,其中 commission
列可能包含 NULL
:
函数 | 结果示例(commission 为 NULL 时) |
---|---|
NVL(commission, 0) | 0 (替换为 0) |
NVL2(commission, commission*0.1, 0) | 0 (根据是否为 NULL 计算) |
COALESCE(commission, bonus, 0) | 如果 bonus 也为 NULL ,则返回 0 |
NULLIF(salary, 0) | 如果 salary 为 0,则返回 NULL |
注意事项
- 数据类型:替换值的数据类型应与原列兼容。
- 性能:在处理大量数据时,函数可能影响查询性能,需谨慎使用。
根据具体场景选择合适的函数,可以有效处理数据库中的空值问题。