关于sql server:替代可为空的列的UNIQUE约束

Alternative to UNIQUE contstraint for nullable columns

本问题已经有最佳答案,请猛点这里访问。

SQL Server允许您应用UNIQUE约束,但其行为很奇怪:在这样的列中不能有多个NULL

我读到NULL的含义及其正常行为,以及其他DMBS产品的工作方式,应该忽略NULL。 相反,它似乎被比较,因此多个NULL被视为重复。

我认为这与NULL的正常行为相反,也是不幸的。 例如,应该可以指示移动电话号码(如果已知)是唯一的。

如果是这种情况,我们如何定义一个允许多个NULLUNIQUE列?


在SQL Server 2008及更高版本中,您可以创建过滤索引,例如 排除NULL值:

1
2
3
CREATE NONCLUSTERED UNIQUE INDEX IX_SomeName
ON dbo.YourTableName(Columns)
WHERE Column1 IS NOT NULL