【发布时间】:2012-01-06 18:11:53
【问题描述】:
我有一个表,其中有一行包含用户电子邮件,我想添加一个约束以使该行唯一。问题是有一些(大约 200 个)列的值是空的。
我需要生成虚拟值并将它们插入到空列中。
我该怎么做?
谢谢
【问题讨论】:
标签: sql sql-server unique
我有一个表,其中有一行包含用户电子邮件,我想添加一个约束以使该行唯一。问题是有一些(大约 200 个)列的值是空的。
我需要生成虚拟值并将它们插入到空列中。
我该怎么做?
谢谢
【问题讨论】:
标签: sql sql-server unique
你可以使用T-SQL函数newid()
newid() 创建一个 uniqueidentifier 类型的唯一值。
UPDATE MyTable set Column = newid() where Column is null
【讨论】:
如果您使用 SQL Server 2008 - 考虑通过电子邮件过滤掉空值的唯一索引,就像这样:
CREATE UNIQUE INDEX [UX.Email, not null] on dbo.YourTable(email)
WHERE email is not null
或
对于 2008 年之前的 SQL Server 版本,您可以使用行的主键标识的值(如果有的话)
update yourtable set email = id where email is null
如果你没有这样的key,至少你可以用NEWID()函数代替id
【讨论】: