代码之家  ›  专栏  ›  技术社区  ›  Torbjörn Gyllebring

SQL Server 2005中的多个随机值

  •  2
  • Torbjörn Gyllebring  · 技术社区  · 17 年前

    我需要在SQLServer2005下生成多个随机值,但不知怎么的,这根本行不通

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

    首选的解决方法是什么?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Mauro    17 年前

    你试过这样的东西吗(在 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(),*来自myTable

    或者从他们的评论中:

    select RAND(CAST(NEWID() AS BINARY(6))), * from myTable
    
        2
  •  0
  •   Torbjörn Gyllebring    17 年前

    我目前正在使用这个:

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

    但这似乎过于老套:S 为什么在第一个版本中不重新评估rand?

    推荐文章