SQL Server:如何将随机整数插入表中?

jra*_*ara 11 sql t-sql sql-server sql-server-2005 sql-server-2008

我有这样的测试表

CREATE TABLE #temp (
    rid INT IDENTITY (1, 1) NOT NULL,
    val INT NULL,
    CONSTRAINT pk_temp_rid PRIMARY KEY (rid)
);
Run Code Online (Sandbox Code Playgroud)

SQL Server中有哪些不同的方法可以将随机整数插入此表中(例如,对于1000行).循环,交叉连接还是什么?

我尝试了这个,但结果不正确

DECLARE @val AS INT = 1;

WHILE @val <= 1000
    BEGIN
        INSERT #temp (val)
        SELECT RAND(@val);
        SET @val = @val + 1;
    END

SELECT *
FROM   #temp;
Run Code Online (Sandbox Code Playgroud)

Yuc*_*uck 7

SQL SERVER - 随机数生成器脚本:

SELECT randomNumber, COUNT(1) countOfRandomNumber
FROM (SELECT ABS(CAST(NEWID() AS binary(6)) % 1000) + 1 randomNumber
      FROM sysobjects) sample
GROUP BY randomNumber;
Run Code Online (Sandbox Code Playgroud)

编辑:只是为了澄清,脚本正在分组每行生成的随机数.因此,不保证结果总数.但是,你可以确定你永远不会获得更多的行SELECT COUNT(*) FROM sysobjects.


SPE*_*109 7

这也在上面做了

Insert Into @t
Select Cast(rand(checksum(newid()))*1000000  as int)
go 1000
Run Code Online (Sandbox Code Playgroud)

请看以下链接:https://www.mssqltips.com/sqlservertip/1467/populate-a-sql-server-column-with-a-sequential-number-not-using-an-identity/


小智 3

您可以用于select CAST(RAND() * 1000000 AS INT) AS [RandomNumber]生成或选择随机整数。所以完整的查询将是这样的:

    DECLARE @t TABLE( randnum float )
DECLARE @cnt INT; SET @cnt = 0
WHILE @cnt <=10000
BEGIN
SET @cnt = @cnt + 1
INSERT INTO @t
SELECT RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) )
END
SELECT randnum, COUNT(*)
FROM @t
GROUP BY randnum
Run Code Online (Sandbox Code Playgroud)

问候..

  • 如果您重复执行此操作,您将获得许多**相同的**“随机”数字,因为 RAND 的参数是*种子*,并且*种子*将保持不变,直到当前毫秒发生变化。大多数系统每毫秒可以插入许多记录。 (7认同)