I need to generate multiple random values under SQL Server 2005 and somehow this simply wont work
with Random(Value) as
(
select rand() Value
union all
select rand() from Random
)select top 10 * from Random
Whats the preffered workaround?
From stackoverflow
-
I'm currently using this:
with Random(Value) as ( select rand(checksum(newid())) Value union all select rand(checksum(newid())) from Random )select top 10 * from Randombut that seems overly hackish :S Why doesnt rand get reevaluated in the first version?
Peter : That will have as much entropy as newid(). checksum() and rand() are both deterministic in this context. -
have you tries something like this (found at http://weblogs.sqlteam.com ) :
CREATE VIEW vRandNumber AS SELECT RAND() as RandNumber GOcreate a function
CREATE FUNCTION RandNumber() RETURNS float AS BEGIN RETURN (SELECT RandNumber FROM vRandNumber) END GOthen you can call it in your selects as normal Select dbo.RandNumber() , * from myTable
or from their comments:
select RAND(CAST(NEWID() AS BINARY(6))), * from myTableTorbjörn Gyllebring : Thanks! Seems like the solution from their comments is about the samething that I came up with after some tinkering. Really odd that it doesnt get revaluated.
0 comments:
Post a Comment