【问题标题】:update sensitive column with dummy data SQL Query使用虚拟数据 SQL 查询更新敏感列
【发布时间】:2013-08-21 15:31:07
【问题描述】:

我有一个包含名字和姓氏的表格,需要使用随机数据进行更改,但为了测试目的可读。所以我在不同的数据库中创建了另一个带有随机名字和姓氏的表。我想用我创建的随机名字和姓氏来更新测试数据库。此外,我想重新排列更新的名称以防万一,所以如果您理解我的意思,我不希望它按顺序更新。

我收到了这个问题

update DB1.table 
set Forename = (???? from DB2.table (Forename)??????)
where Forename is not null

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:
    Declare @Id int
    
    DECLARE db_cursor CURSOR FOR  
    SELECT Id 
    FROM DB1.dbo.table 
    WHERE Forename is not null
    
    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @id   
    
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
            update DB1.dbo.table 
            set Forename = (select top(1) Forename from DB2.dbo.table order by newid())
            where Id = @id
    
           FETCH NEXT FROM db_cursor INTO @id   
    END   
    
    CLOSE db_cursor   
    DEALLOCATE db_cursor
    

    将使用来自 table2 的随机名字更新来自 table1 的每个名字

    然后你可以对姓氏做同样的事情,这会混淆表 2 中的名字/姓氏,我认为这就是你所说的最后一行的意思......

    【讨论】:

    • 这样做是更新了所有具有相同名称的列。所以我现在得到了整列的重复名称。
    • 对不起,是的,你需要使用光标,我更新了我的答案,这假设你的表有一个唯一的 id 列可以循环。
    • 我收到此错误消息 206,级别 16,状态 2,第 13 行操作数类型冲突:uniqueidentifier 与 int 不兼容
    • 不,我还没有排序
    猜你喜欢
    • 2020-10-05
    • 2023-03-18
    • 1970-01-01
    • 2014-12-02
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    相关资源
    最近更新 更多