0

我在sql中有这个过程。要求是:如果条件(例如我放 1=1 ..)然后 [运行另一个过程或函数,该过程或函数将从表中随机取一个值并返回它。] else 1 例如:

 case when 1=1 then (dbo.myFunc @input) else 1

这是 myTable: '1','2','3' 我希望这个函数从中随机一个值

CREATE FUNCTION dbo.myFunc (@input int)
RETURNS int
AS BEGIN
    declare @rndValue int
    set @rndValue = (SELECT top 1 * FROM myTable ORDER BY newID())
    RETURN @rndValue 
END

问题是在函数中我不能运行 newID(),如果我想使用过程而不是函数,我不能从 case 语句中运行它。

你有什么建议。?多谢。

4

1 回答 1

0

我认为您需要这样的代码:

set x = case when 1=1 then (select top(1) val from myTable order by newid()) else 1 end;

SQL小提琴

于 2020-02-05T11:34:11.980 回答