oracle空值替换

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;
    

    依次检查 column1column2,返回第一个非 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

注意事项

  • 数据类型:替换值的数据类型应与原列兼容。
  • 性能:在处理大量数据时,函数可能影响查询性能,需谨慎使用。

根据具体场景选择合适的函数,可以有效处理数据库中的空值问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值