gpt4 book ai didi

sql - TSQL 伪随机文本生成器

转载 作者:行者123 更新时间:2023-12-03 18:24:35 27 4
gpt4 key购买 nike

我正在对 SQL sproc 进行一些性能测试,只是想推出一个快速数据生成器进行测试。

我正在寻找一种简单的方法来生成伪随机(在这种情况下不需要真正的随机)varchar 字段。

到目前为止,我的想法是有一个可以使用的有效字符的字符定义,然后根据这个定义构建字符串,并使用伪随机长度来定义最大/最小长度的长度变化。

编辑:

我的测试数据生成器:

DECLARE @MyDataTable TABLE
(
RecID int IDENTITY(1,1) PRIMARY KEY,
SomeText varchar(255)
)

DECLARE @RecId int, @SomeText varchar(255),
@maxlength int, @minlength int,
@RecordCount int, @Counter int
SET @maxlength = 254
SET @minlength = 50
SET @RecordCount = 500000
SET @Counter = 1

WHILE (@Counter < @RecordCount)
BEGIN
INSERT INTO @MyDataTable
(
SomeText
)
SELECT TOP 1
(
select top (abs(checksum(newid())) % (@maxlength-@minlength) + @minlength) char(abs(checksum(newid())) % 26 + ascii('A'))
from sys.all_objects a1
where sign(a1.object_id) = sign(t.object_id) /* Meaningless thing to force correlation */
for xml path('')
) as NewRandomString
FROM sys.all_objects t;
SET @Counter = @Counter + 1
END

最佳答案

我最近写了一篇关于这个的博客文章。

http://msmvps.com/blogs/robfarley/archive/2009/12/07/randomising-data.aspx

select top (@stringlength) char(abs(checksum(newid())) % 26 + ascii('A')) 
from sys.all_objects
for xml path('')
;

编辑:对不起 - 没有包括随机长度的东西......
SELECT 
(
select top (abs(checksum(newid())) % (@maxlength-@minlength) + @minlength) char(abs(checksum(newid())) % 26 + ascii('A'))
from sys.all_objects
for xml path('')
) as NewRandomString
FROM yourTable; /* Maybe something like dbo.nums? */

编辑:对不起 - 需要相关...
SELECT  
(
select top (abs(checksum(newid())) % (@maxlength-@minlength) + @minlength) char(abs(checksum(newid())) % 26 + ascii('A'))
from sys.all_objects a1
where sign(a1.object_id) = sign(t.object_id) /* Meaningless thing to force correlation */
for xml path('')
) as NewRandomString
,*
FROM sys.all_objects t;

关于sql - TSQL 伪随机文本生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com