TSQL:在Update语句中生成随机字符串

时间:2017-05-24 19:28:40

标签: sql-server

我需要通过使用相等长度的随机字符串更改所有文本值来混淆SQL Server数据库:

qwert -> vno3w
a123456 -> vn58wof

我无法在UPDATE中使用过程或功能,而某些字符串可能包含数千个符号,因此GUID不是变体。

我发现的最好的是

declare @BinaryData varbinary(max)
, @CharacterData varchar(max)
, @Length int = 2048

set @BinaryData=crypt_gen_random (@Length) 

set @CharacterData=cast('' as xml).value('xs:base64Binary(sql:variable("@BinaryData"))', 'varchar(max)')

原因是检查数据库上的新组件性能如生产(客户端不给我们备份而不删除像这样的真实用户数据)。 在我目前的情况下,外键不是问题。

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

SELECT STUFF((SELECT '' + symbols FROM (
SELECT CHAR(
CASE WHEN r between 0 and 9 THEN 48
WHEN r between 10 and 35 THEN 55
ELSE 61 END + r) symbols
FROM
master..spt_values
CROSS JOIN
(SELECT CAST(RAND(ABS(CHECKSUM(NEWID()))) *61 as int) r) a WHERE type = 'P' AND number < 3333) symbols
FOR XML PATH('')) ,1,1,'') AS RandText