2008-10-08 49 views
2

我需要生成的SQL Server 2005下的多個隨機值,並在某種程度上這根本不會工作多個隨機值2005

with Random(Value) as 
(
    select rand() Value 
     union all 
    select rand() from Random 

)select top 10 * from Random 

請告訴我較受歡迎的解決方法嗎?

+0

我喜歡這樣的問題,迫使我去學習新的東西!謝謝!希望答案有幫助。 – Mauro 2008-10-08 15:01:35

回答

3

有你嘗試這樣的事情(在http://weblogs.sqlteam.com找到):

CREATE VIEW vRandNumber 
AS 
SELECT RAND() as RandNumber 
GO 

創建一個功能

CREATE FUNCTION RandNumber() 
RETURNS float 
AS 
    BEGIN 
    RETURN (SELECT RandNumber FROM vRandNumber) 
    END 
GO 

,那麼你可以把它在你的選擇是正常 選擇dbo.RandNumber() ,* from myTable

or from their comments:

select RAND(CAST(NEWID() AS BINARY(6))), * from myTable 
+0

謝謝!似乎他們評論中的解決方案與我經過一番修改後提出的相同。真奇怪,它沒有得到重新評估。 – 2008-10-08 15:03:07

0

我目前使用這樣的:

with Random(Value) as 
(
    select rand(checksum(newid())) Value 
     union all 
    select rand(checksum(newid())) from Random 
)select top 10 * from Random 

,但似乎過於的hackish:S 爲什麼犯規蘭特在第一個版本重新估計?

+0

這將有與newid()一樣多的熵。校驗和()和rand()在這種情況下都是確定性的。 – 2009-06-18 15:23:51