在SQL Server中,我们可以比较一个表中外键的空值和另一个表中的唯一键吗?
外键和唯一键可以有空值。假设表1中的FK引用了表2中的UK,我们可以比较null=null,或者跳过这样的比较?唯一键可以接受1个空值,因此存在这个问题 添加如下示例 PassportNumber是PersonTable中的外键,也是PassportNumber表中的唯一键。 如果我们根据PassportNumber加入下表,记录将加入或跳过 人在SQL Server中,我们可以比较一个表中外键的空值和另一个表中的唯一键吗?,sql,sql-server,foreign-keys,unique-key,Sql,Sql Server,Foreign Keys,Unique Key,外键和唯一键可以有空值。假设表1中的FK引用了表2中的UK,我们可以比较null=null,或者跳过这样的比较?唯一键可以接受1个空值,因此存在这个问题 添加如下示例 PassportNumber是PersonTable中的外键,也是PassportNumber表中的唯一键。 如果我们根据PassportNumber加入下表,记录将加入或跳过 人 身份证名称护照号码 1约翰·努尔 2 Anil J01234567 乘客 Id车辆号码护照号码 1US 7C 0987空值 2 UK 8C 0698
身份证名称护照号码
1约翰·努尔
2 Anil J01234567 乘客 Id车辆号码护照号码
1US 7C 0987空值
2 UK 8C 0698 J01234567将跳过
NULL
值。如果希望NULL
s匹配,则需要显式逻辑:
on (t1.col = t2.col) or (t1.col is null and t2.col is null)
但是警告:或
可能会降低性能
标准SQL的
与比较运算符没有区别,比较运算符是“空安全的”--意思是NULL
=NULL
。SQL Server不支持这样的运算符。在SQL中比较空值很奇怪。您可以将ISNULL(FieldName,“”)设置为=ISNULL(FieldName,=“”)。或者在where子句1中使用关键字FieldName IS NULL和FieldNameTable2 NULL。约束与查询无关。PKs、UNIQUEs、FKs等是什么并不重要。2.使用NULL是一个基本的常见问题,不应该再问。3.你的问题不清楚。用足够多的单词、句子和例子来表达你的意思。你到底写了什么,你到底期望什么(以及你到底得到了什么)还不清楚。关于NULL如何工作以及WHERE如何工作,您从阅读中学到了什么?我甚至说这是一个常见问题。未来的PS 1。谷歌“stackexchange通知”将学习使用@x向非唯一非海报用户x发送评论通知。2.可能重复的