Oracle中的NULL值

  1. NULL的定义与特性‌。

    • 未知性‌:NULL表示数据未知或不可用,无法直接与任何值(包括另一个NULL)进行比较或运算。‌‌
    • 三值逻辑‌:Oracle处理布尔表达式时采用三值逻辑(TRUE、FALSE、UNKNOWN),其中NULL比较的结果为UNKNOWN。‌‌
    • 空字符串与NULL的等价性‌:空字符串('')在Oracle中被视为NULL,因此不能使用=!=判断空字符串,应直接使用IS NULLIS NOT NULL。‌‌
  2. 比较与运算规则‌。

    • 禁止直接比较‌:NULL = NULLNULL != NULL等表达式的结果均为UNKNOWN,不返回TRUE或FALSE。‌‌
    • 逻辑运算的特殊性‌:
      1. NOT(UNKNOWN)返回UNKNOWN;
      2. AND运算中,若任一操作数为UNKNOWN,则整个表达式结果为UNKNOWN;
      3. OR运算中,若任一操作数为TRUE或UNKNOWN,则整个表达式结果为TRUE。‌‌
  3. 聚合函数与空值的处理‌。

    • 聚合函数(如SUM、AVG)自动忽略NULL值,仅计算非空值。‌‌
    • COUNT(*)统计时,若列完全为NULL(即所有行该列均为NULL),则结果为0;若部分行该列为NULL,则统计非NULL的行数。‌‌
  4. 特殊函数处理‌。

    • NVL‌:将NULL转换为指定值(例如NVL(column, 0)可将列中的NULL替换为0)。‌‌3‌‌4
    • COALESCE‌:从左至右返回第一个非NULL值;若所有参数为NULL,则结果为NULL。‌‌
    • DECODE‌:将两个NULL视为相等(例如DECODE(column, NULL, 'A')可能返回'A')。‌‌2
  5. 索引与排序‌。

    • 索引限制‌:含有NULL值的列无法建立索引,查询时可能遗漏包含NULL值的行。‌‌5
    • 排序规则‌:在ORDER BY中,NULL被视为最大值(降序排列),因此通常排在最后。‌‌

注意事项‌:
6. 更新列时显式设置为NULL(例如UPDATE table SET column = NULL WHERE ...),避免将空字符串误存为空值。‌‌
7. 避免在WHERE子句中使用column = NULLcolumn != NULL,应改用column IS NULLcolumn IS NOT NULL。‌‌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值