【问题标题】:How to populate empty columns with unique values in SQL Server?如何在 SQL Server 中使用唯一值填充空列?
【发布时间】:2012-01-06 18:11:53
【问题描述】:

我有一个表,其中有一行包含用户电子邮件,我想添加一个约束以使该行唯一。问题是有一些(大约 200 个)列的值是空的。

我需要生成虚拟值并将它们插入到空列中。

我该怎么做?

谢谢

【问题讨论】:

    标签: sql sql-server unique


    【解决方案1】:

    说明

    你可以使用T-SQL函数newid()

    newid() 创建一个 uniqueidentifier 类型的唯一值。

    示例

    UPDATE MyTable set Column = newid() where Column is null
    

    更多信息

    【讨论】:

    • @Mithrandir 我也这么认为 ;)
    【解决方案2】:

    如果您使用 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

    【讨论】:

    • @AndriyM 感谢您的编辑 - 我是用手机写的 - 有点烦人
    • 我今天的声望已经达到上限,所以请明天 8 天撤销我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多