在SQL Server中,我们可以比较一个表中的外键和另一个表中的唯一键的空值吗?

时间:2019-02-28 13:52:21

标签: sql sql-server foreign-keys unique-key

Foreign Key和Unique Key可以具有null值。假设Table1中的FK在Table2中引用UK,我们可以将null = null进行比较吗,否则将跳过这样的共同信息?唯一键可以采用1个NULL值,因此是问题。

添加如下示例

PassportNumber在PersonTable中是ForeignKey,在Passenger表中是Unique Key。 如果我们基于PassportNumber联接下表,则记录将加入联接或被跳过。

人员
身份证名称护照号码
1 John NULL
2阿尼尔J01234567

乘客

身份证车辆号码护照号码
1美国7C 0987 NULL
2英国8C 0698 J01234567

1 个答案:

答案 0 :(得分:1)

NULL值将被跳过。如果要匹配NULL,则需要明确的逻辑:

on (t1.col = t2.col) or (t1.col is null and t2.col is null)

警告:or可能会降低性能。

标准SQL具有is not distinct from比较运算符,该运算符是“ NULL安全”的-表示NULL = NULL。 SQL Server不支持此类运算符。

相关问题