[英]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.