Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中,我们可以比较一个表中外键的空值和另一个表中的唯一键吗?_Sql_Sql Server_Foreign Keys_Unique Key - Fatal编程技术网

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

在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中的FK引用了表2中的UK,我们可以比较null=null,或者跳过这样的比较?唯一键可以接受1个空值,因此存在这个问题

添加如下示例

PassportNumber是PersonTable中的外键,也是PassportNumber表中的唯一键。 如果我们根据PassportNumber加入下表,记录将加入或跳过


身份证名称护照号码
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.可能重复的