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

Sql server 从预定义列表中选择随机数据,sql-server,select,random,Sql Server,Select,Random,我有一个员工ID列表,比如: Q1654 F2597 Y9405 B6735 D8732 C4893 I9732 L1060 H6720 这些值不在我的任何一个表中,但我想创建一个函数,该函数不接受任何参数,并从该列表返回一个随机值。我怎样才能做到这一点呢?在不涉及随机数论的情况下,这里有一种方法: 它基本上使用函数newID生成一个随机值,然后根据它进行排序,返回前1条记录 考虑到它需要在函数中,而函数的不能使用newID。。。在中间插入视图消除了问题。 Select * into myR

我有一个员工ID列表,比如:

Q1654
F2597
Y9405
B6735
D8732
C4893
I9732
L1060
H6720

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

在不涉及随机数论的情况下,这里有一种方法:

它基本上使用函数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;

是的,但是我怎样才能创建一个函数呢?我想返回值,但我一直得到标量值函数中的
返回语句必须包含一个参数。
当我试图返回varchar时。@user1911612我已经更新了解决方案,使其也包含一个新的fiddle,并实际构建了返回随机值的函数。我不得不想办法解决在标量函数中使用NEWID的问题。是的,我最终这么做了,只是在我发表评论时太固执了哈哈。非常感谢你的回答。我完全忘记了风景!