2
我有員工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)
[email protected] =
Select @RetValue = val from vmyRand
RETURN(@retValue)
END;
是的,但我怎樣才能創建這個功能?我想返回值,但是當我嘗試返回一個varchar時,我一直在獲取標量值函數中的RETURN語句必須包含一個參數。 – rjbogz
@ user1911612我已經更新瞭解決方案以包含一個新的小提琴,並且實際構建了函數以返回一個隨機值。儘管如此,爲了解決在標量函數中使用NEWID的問題,我不得不提出一個觀點。 – xQbert
是的,我結束了這麼做,當我發表評論哈哈時,我只是固執己見。非常感謝答案。我完全忘了意見! – rjbogz