1

可能重复:
使用 RAND() 在 SQL Server 中创建非确定性函数

我需要在函数中生成一些随机 nvarchar。所以我创建了这个函数:

CREATE FUNCTION [dbo].[sfp_GenerateRandomString]    
    (@length int) -- Length of string   
RETURNS NVARCHAR
AS
BEGIN
DECLARE @random NVARCHAR(25) = ''

while @length > 0   
begin
    set @random = @random + nchar((cast(rand()*1000 as int)%26)+97)
    set @length = @length-1
end
return @random      
END

但它不起作用,因为在必须是 DETERMINISTIC 的 SQL 函数中禁止使用 RAND() 函数。并且 RAND() 是不确定的。

所以我的问题是在这种情况下如何生成随机数?谢谢。

4

1 回答 1

0

如果您确实需要在函数中使用 SQL CLR 函数,则可以使用它。或者,如果您只需要在一个地方,只需将其放在存储过程中即可。

就我个人而言,如果有帮助的话,我会选择根本不在 SQL Server 中做这种工作。这是应用程序逻辑,而不是数据库逻辑。虽然不知道背景故事,但我不知道您可能还有什么其他限制。

于 2011-11-28T10:53:42.857 回答