在SQL Server中,我们可以比较其他表中onetable和Unique Key中的外键中的空值吗?

问题描述 投票:-1回答:1

外键和唯一键可以具有正确的空值。表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

sql sql-server foreign-keys unique-key
1个回答
1
投票

将跳过NULL值。如果你想要匹配NULLs,你需要明确的逻辑:

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不支持此类运算符。

© www.soinside.com 2019 - 2024. All rights reserved.