Sql server 唯一键可以具有的空值数

Sql server 唯一键可以具有的空值数,sql-server,Sql Server,我想知道在sql server中一个唯一键可以有多少空值。我读过很多文章,每一篇都有不同的答案,有些说接受无限空值,有些说只接受一个空值,根据我的说法,只接受一个空值,我是对的还是错的?答案是:视情况而定。有一种方法可以创建一个唯一的索引,允许在MS SQL Server中使用多个空值,但这不是默认值。MS中的默认值是只允许一个NULL。但这不是ANSI标准。ANSI标准92、99和03明确允许具有唯一性的多个空值 这里的答案给出了一个很好的解释: 更新示例: 从表定义中删除唯一约束,然后像这

我想知道在sql server中一个唯一键可以有多少空值。我读过很多文章,每一篇都有不同的答案,有些说接受无限空值,有些说只接受一个空值,根据我的说法,只接受一个空值,我是对的还是错的?

答案是:视情况而定。有一种方法可以创建一个唯一的索引,允许在MS SQL Server中使用多个空值,但这不是默认值。MS中的默认值是只允许一个NULL。但这不是ANSI标准。ANSI标准92、99和03明确允许具有唯一性的多个空值

这里的答案给出了一个很好的解释:

更新示例: 从表定义中删除唯一约束,然后像这样添加索引

CREATE UNIQUE NONCLUSTERED INDEX idx_name
ON table_name(column_name)
WHERE column_name IS NOT NULL;

我试过只接受一个空值value@AshU这是你的答案!由于索引必须是唯一的-每个值(以及非值,如
NULL
)只能出现一次-这就是唯一索引的全部要点,不是吗???比这稍微复杂一点。在ANSI sql中,null不等于null,因此许多null可以是唯一的。可以打开或关闭ANSI_NULL。默认情况下,它在MS SQL中处于禁用状态。但是,MS表示,在未来的版本中,它将默认为“开”,而您将无法将其设置为“开”。@RyanB请您用一个小示例向我解释,如何在我的唯一列中插入多个空值。我无法理解,如何在“我的唯一列”中插入多个空值常规唯一列无法执行此操作。但您可以创建列不为NULL的唯一索引。这将允许您在列中插入多个null。空值不会被索引。你能用一个小例子来解释我吗?我还添加了:将ANSI_空值设置为On