2008-10-08 2 views
2

мне нужно генерировать несколько случайных значений под SQL Server 2005 и как-то это просто не будет работатьНесколько случайных значений в SQL Server 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 

, то вы можете назвать это в вашем выбираете как нормальный Select dbo.RandNumber() , * from myTable

или их комментарии:

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 

, но это кажется слишком хаком: S Почему оленья кожа рэнд перепроверены в первой версии?

+0

Это будет иметь столько энтропии, как newid(). checksum() и rand() в этом контексте являются детерминированными. – 2009-06-18 15:23:51