0

我正在为一些表格制作一些虚拟数据。对于整数列,这很容易。我有几列只是枚举,我试图弄清楚如何随机化它们。我正在尝试复制这种逻辑,但是对于 SQL

CASE RAND()
WHEN BETWEEN (0,.3) THEN 'Apple'
WHEN BETWEEN (.31, .6) THEN 'Orange'
WHEN BETWEEN (.61, 1) THEN 'Banana'

这是在插入语句中,所以现在对于我拥有的其他一些列

INSERT INTO Table Values ('1', 'a', CASE Rand() WHEN > .3 THEN 'firstEnum' ELSE 'secondEnum')

我想得到这个不仅仅是两个枚举。

我将使用实际执行此操作的正确方法是什么?我认为有更好的方法,但我的 SQL 经验非常有限。

4

3 回答 3

1

我的建议是购买http://www.red-gate.com/products/sql-development/sql-data-generator/。我使用那里的工具带,他们以合理的价格制作了出色的工具。如果您负担不起,我建议您查看 Codeplex 或 GitHub。查看这个问题以及更多信息寻找一个 SQL 测试集生成器,最好是开源的

于 2013-09-17T23:16:01.683 回答
0

您可以执行类似的操作,我在 SQL Server 2012 中对此进行了测试,但如果它不符合您的需求,我很乐意发布其他解决方案。

DECLARE @ListofIDs TABLE(IDs VARCHAR(100));
INSERT INTO @ListofIDs
VALUES('Jeff'),('John'),('Mike'),('Chris'),('Tom'),('Fred');
SELECT top (1) IDs FROM @ListofIDs order by NEWID();
GO
于 2013-09-17T23:38:54.280 回答
0

您还可以通过以下方式生成随机文本

BEGIN
-- get a random varchar ascii char 32 to 128
DECLARE @RandomText VARCHAR(160)
DECLARE @length INT
SELECT @RandomText = ''
SET @length = CAST(RAND() * 160 as INT)
WHILE @length <> 0
    BEGIN
    SELECT @RandomText = @RandomText + CHAR(CAST(RAND() * 96 + 32 as INT))
    SET @length = @length - 1
END
print(@RandomText)
END
于 2013-09-17T23:42:22.077 回答