web-dev-qa-db-ja.com

SQL Server:ランダムな整数をテーブルに挿入する方法は?

私はこのようなテストテーブルを持っています

CREATE TABLE #temp (
    rid INT IDENTITY (1, 1) NOT NULL,
    val INT NULL,
    CONSTRAINT pk_temp_rid PRIMARY KEY (rid)
);

このテーブルにランダムな整数を挿入するためのSQLServerのさまざまな方法は何ですか(たとえば、1000行の場合)。 whileループ、クロス結合、または何ですか?

これを試しましたが、結果が正しくありません

DECLARE @val AS INT = 1;

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

SELECT *
FROM   #temp;
11
jrara

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

よろしく。

3
Tamer

これも上で行われます

Insert Into @t
Select Cast(Rand(checksum(newid()))*1000000  as int)
go 1000

このリンクを参照してください: https://www.mssqltips.com/sqlservertip/1467/populate-a-sql-server-column-with-a-sequential-number-not-using-an-identity/ ==

8
SPE109

From SQL SERVER –乱数ジェネレータスクリプト

_SELECT randomNumber, COUNT(1) countOfRandomNumber
FROM (SELECT ABS(CAST(NEWID() AS binary(6)) % 1000) + 1 randomNumber
      FROM sysobjects) sample
GROUP BY randomNumber;
_

[〜#〜] edit [〜#〜]:明確にするために、スクリプトは行ごとに生成された乱数をグループ化しています。したがって、結果の総数は保証されません。ただし、SELECT COUNT(*) FROM sysobjectsより多くの行を取得することはありません。

7
Yuck

「しばらくはうまくいくと思います。あなたはとても近いです。

DECLARE @val AS INT = 1;

WHILE @val <= 1000
BEGIN
    INSERT #temp (val)
    SELECT cast((Rand()*1000) as int);
    SET @val = @val + 1;
END

SELECT *
FROM   #temp;
2
NullRef