簡體   English   中英

如何在SQL Server 2008中編寫存儲過程,生成300萬隨機編號

[英]How to write stored procedure in SQL Server 2008 that generates 3 million random no

如何在SQL Server 2008中編寫存儲過程,在整數數據類型的兩列中生成300萬隨機no。

SELECT TOP 3000000 
    ABS(CHECKSUM(NewId())) As RndCol1, 
    ABS(CHECKSUM(NewId())) AS RndCol2
FROM 
    sys.objects s1 
    CROSS JOIN sys.objects s2 
    CROSS JOIN sys.objects s3
    CROSS JOIN sys.objects s4

[您可能想要使用卡方檢驗來檢查這些數字的實際分布]

更新 :這些隨機性可能不符合卡方分布測試。 我建議您根據自己的情況進行測試。

您可以使用CTE,例如:

create procedure dbo.GiveMeRandomNumbers
as
    begin
    with qry as (
        select  CAST(CAST(NEWID() AS VARBINARY) AS INT) as col1
        ,       CAST(CAST(NEWID() AS VARBINARY) AS INT) as col2
        ,       0 as i
        union all
        select  CAST(CAST(NEWID() AS VARBINARY) AS INT) as col1
        ,       CAST(CAST(NEWID() AS VARBINARY) AS INT) as col2
        ,       i + 1 
        from    qry
        where   i < 3000000
    )
    select  col1, col2
    from    qry
    option  (maxrecursion 0)
    end

這使用newid因為rnd函數將為CTE的每個遞歸應用程序返回相同的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM