我有一个员工 ID 列表,可以说:
Q1654
F2597
Y9405
B6735
D8732
C4893
I9732
L1060
H6720
这些值不在我的任何一个表中,但我想创建一个不接受任何参数并从此列表中返回随机值的函数。我怎样才能做到这一点?
我有一个员工 ID 列表,可以说:
Q1654
F2597
Y9405
B6735
D8732
C4893
I9732
L1060
H6720
这些值不在我的任何一个表中,但我想创建一个不接受任何参数并从此列表中返回随机值的函数。我怎样才能做到这一点?
在不涉及随机数理论的情况下,这是一种方法:
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;