SQL中的空值(null)对算术运算、比较运算、集合运算的影响

算术运算

如果算术表达式的任一输入为空,则该算术表达式(涉及诸如 +、-、* 或 / 的算术运算)结果为空。

例:如果查询中有一个表达式是r.A + 5, 并且对于关系中某个特定的元组, r.A为空,那么对此元组来说,该表达式的结果也为空。

比较运算

SQL将涉及空值的任何比较运算的结果视为unknown(既不是谓词is null,也不是is not null)。unknown是在SQL中除true和false之外的第三个逻辑值。

补充:由于在where子句的谓词中可以对比较结果使用诸如andornot的布尔运算,将布尔运算扩展到可以处理unknown值,运算结果如下:

  • and:true and unknown = unknown, false and unknown = false, unknown and unknown = unknown
  • or:true or unknown = true, false or unknown = unknown, unknown or unknown = unknown
  • notnot unknown = unknown

可以验证,如果r.A为空,那么"1 < r.A" 和 "not (1 < r.A)"的结果都为unknown。

"null = null"会返回unknown,而不是true。

集合运算

在集合运算中,{('A', null), ('A', null)}中的两个元素会被认为是相同的元素。因此在使用distinct子句只会保留这样的相同的元组的一份拷贝。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值