Sql server 从函数内的表中获取一个随机行-sql server

Sql server 从函数内的表中获取一个随机行-sql server,sql-server,random,case,procedure,newid,Sql Server,Random,Case,Procedure,Newid,我在sql中有这个过程。 要求是: 如果条件(例如,我将1=1..)则[运行另一个过程或函数,该过程或函数将从表中随机选择一个值并返回它。]否则1 例如: case when 1=1 then (dbo.myFunc @input) else 1 这是我的表格:“1”,“2”,“3” 我希望这个函数从中随机取一个值 CREATE FUNCTION dbo.myFunc (@input int) RETURNS int AS BEGIN declare @rndValue int

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

 case when 1=1 then (dbo.myFunc @input) else 1
这是我的表格:“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语句中运行它


你有什么建议。?非常感谢。

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

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

此外,这里还有一个ml SVF;这些都是众所周知的表现不佳的。使用iTVF会更好。不能在用户定义函数中使用newID这是我得到的错误,iTVF是什么?它也存在于sqlserver中?是否可以使用另一种方法来代替函数?存储过程,或者您可以从case Expression运行的所有东西谢谢,但是这种方法对我不好,因为随机部分只是我函数的一部分,所以我不能这样做。我必须使用函数…因为我想设置一个随机值作为一个变量,因为你们在问题评论中接受了它,我发布了这个答案!,因此,如果您的要求发生变化,请详细说明!添加更多细节、示例和所需结果(HTH;)。对不起,你说得对!但是我写了,我需要它在另一个函数中。