外键和唯一键可以具有正确的空值。表1中的假设FK引用表2中的UK,我们可以比较null = null,还是会跳过这样的comaprisons?唯一键可以取1 NULL值,因此问题。
添加如下示例
护照号码是人员表中的外键和乘客表中的唯一键。如果我们根据护照号码加入以下表格,则记录会加入,否则将被跳过。
人 Id名称passportNumber 1 John NULL 2 Anil J01234567
乘客
Id VehicleNumber passportNumber 1 US 7C 0987 NULL 2 UK 8C 0698 J01234567
将跳过NULL
值。如果你想要匹配NULL
s,你需要明确的逻辑:
on (t1.col = t2.col) or (t1.col is null and t2.col is null)
但警告:or
可以扼杀性能。
标准SQL有is not distinct from
比较运算符,它是“NULL-safe” - 意思是NULL
= NULL
。 SQL Server不支持此类运算符。