在SQL Server中争夺一个列?

lar*_*ryq 4 sql-server random scramble

我们有一个网络应用程序,我们想向潜在客户演示,但我们最好的方法是使用现有数据,以获得完整的体验.当然,我们不希望在应用程序中看到实际的客户名称或地址等.在SQL Server中有一种简单的方法可以随机化或加扰varchar或文本字段吗?

无论如何,这些列都不是主键或外键.

Mal*_*tre 5

这是一个迟到的答案,但我对此问题的任何互联网搜索都不满意.这是一个示例,它将洗牌客户表中的名字和姓氏以创建新名称:

--Replace Customers with your table name
select * from Customers

--Be sure int match your id column datatype
Declare @id int

--Add a WHERE here to select just a subset of your table
DECLARE mycursor CURSOR FOR SELECT id FROM Customers
OPEN mycursor
FETCH NEXT FROM mycursor INTO @id;

WHILE (@@FETCH_STATUS = 0) 
BEGIN
    --We loop
    --Warning: NEWID() is generated once per query, so we update the fullname in two queries.
    UPDATE Customers
        SET FirstName = (SELECT TOP 1 FirstName FROM Customers ORDER BY NEWID())
    WHERE id = @id
    UPDATE Customers
        SET LastName = (SELECT TOP 1 LastName FROM Customers ORDER BY NEWID())
    WHERE id = @id
    FETCH NEXT FROM mycursor INTO @id;
END

CLOSE mycursor;
DEALLOCATE mycursor;

select * from Customers
Run Code Online (Sandbox Code Playgroud)