Sql 使用随机字符串值更新列中的所有行以进行测试
使用用户定义的Sql 使用随机字符串值更新列中的所有行以进行测试,sql,tsql,sql-server-2016,Sql,Tsql,Sql Server 2016,使用用户定义的generateString()函数,我使用以下SQL创建随机varchar 当@char有一个排除字符'0:@O[]``^\/'然后,如果条件wll失败并且@len不会递减,那么在下一个循环中,也将使用相同的@random值,并将生成相同的@char,因此它将进入无限循环 将@random变量的初始化移动到循环中,同时在每个循环中生成新的随机值 DECLARE @random DECIMAL(18,18) while @len > 0 begin SELECT
generateString()
函数,我使用以下SQL创建随机varchar
当
@char
有一个排除字符'0:@O[]``^\/'
然后,如果条件wll失败并且@len
不会递减,那么在下一个循环中,也将使用相同的@random
值,并将生成相同的@char
,因此它将进入无限循环
将@random
变量的初始化移动到循环中,同时在每个循环中生成新的随机值
DECLARE @random DECIMAL(18,18)
while @len > 0 begin
SELECT @random = dbo.RandFn()
select @char = char(round(@random * 74 + 48, 0))
if charindex(@char, @exclude) = 0 begin
set @output = @output + @char
set @len = @len - 1
end
end
您对randomvarchar
数据有任何限制,比如它应该是8个字符,或者至少应该有一个符号之类的吗?没有,我只需要字段中的random varchar数据。现在列中的所有内容都为NULL,不适合测试。然后只需使用Newid()
。类似于这样的updatedbo.Inci SET SerialText=newid()
确实有效。非常感谢。尽管如此,我仍然很好奇,如果我需要特定的或更“真实”的数据,如何让原始的post语句发挥作用。这很接近,但它只是更新列以包含1个字符,而不是整个“字符串”。我想这里还发生了其他事情。它只运行了14分钟,没有停止的迹象。我只更新了82条记录,所以老实说不会花那么长时间吧?谢谢!事实上我让它工作了。还必须将“ALTER FUNCTION generateString()RETURNS VARCHAR”设置为“RETURNS VARCHAR(50)”,这样当我在update语句中使用该函数时,它会给我不止一个字符。
UPDATE dbo.Inci
SET SerialText = dbo.generateString()
DECLARE @random DECIMAL(18,18)
while @len > 0 begin
SELECT @random = dbo.RandFn()
select @char = char(round(@random * 74 + 48, 0))
if charindex(@char, @exclude) = 0 begin
set @output = @output + @char
set @len = @len - 1
end
end