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