select * from tablaname order by newid()

解决方案 »

  1.   

    --自定义函数:取得指定上下限的随机数if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_rand]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[f_rand]
    GO
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_rand]') and OBJECTPROPERTY(id, N'IsView') = 1)
    drop view [dbo].[v_rand]
    GO--需要这样一个视图
    create view v_rand as select re=rand()
    go--自定义函数:取得指定上下限的随机数
    create function f_rand(
    @下限 int,
    @上限 int
    )
    returns decimal(38,0)
    as
    begin
    declare @r decimal(38,0)
    select @r=cast(re*(@上限-@下限)+@下限 as decimal(38,0)) from v_rand
    return(@r)
    end
    go--调用示例
    select dbo.f_rand(10,100),dbo.f_rand(10,100)
      

  2.   

    to: skyboy0720(飞) 
    ---------------
    为什么要用view , 怎么不直接把在函数中使用rand(),其中有什么秘密吗? :)
    期待您的解释。
      

  3.   

    因为在自定议函数中不能使用不确定的函数,如getdate() rand() 等。
      

  4.   

    在自定义函数中不能使用rand()!