从预定义列表中选择随机数据

时间:2013-07-02 13:33:40

标签: sql-server select random

我有一份员工ID列表,让我们说:

Q1654
F2597
Y9405
B6735
D8732
C4893
I9732
L1060
H6720

这些值不在我的任何一个表中,但我想创建一个不带参数的函数,并从该列表中返回一个随机值。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

没有进入随机数理论,这里有一种方法:

http://sqlfiddle.com/#!6/192f2/1/0

它基本上使用函数newID生成随机值,然后通过返回前1条记录进行排序。

鉴于它需要在函数中,函数不能使用newID ...在中间插入视图可以消除问题。

Select * into myRand FROM (
SELECT 'Q1654' as val UNION
SELECT 'F2597'UNION
SELECT 'Y9405'UNION
SELECT 'B6735'UNION
SELECT 'D8732'UNION
SELECT 'C4893'UNION
SELECT 'I9732'UNION
SELECT 'L1060'UNION
SELECT 'H6720') b;


Create View vMyRand as 
Select top 1 val from myRand order by NewID();

CREATE FUNCTION GetMyRand ()
RETURNS varchar(5)

--WITH EXECUTE AS CALLER
AS
BEGIN
Declare @RetValue varchar(5)
--@configVar =
Select @RetValue = val from vmyRand
RETURN(@retValue)
END;