可能重复:
Creating Nondeterministic functions in SQL Server using RAND()
我需要在函数中生成一些随机的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
但它不起作用,因为在SQL函数中禁止RAND()函数必须是DETERMINISTIC。而RAND()是NONDETERMINISTIC。
所以我的问题是如何在这种情况下生成随机数? 感谢。
答案 0 :(得分:0)
如果你真的需要一个函数,你可以使用SQL CLR函数。或者,如果您只需要在一个地方使用它,只需将其放入存储过程即可。
就个人而言,我会选择不在SQL Server内部进行此类工作,如果可以帮助的话。这是应用程序逻辑,而不是数据库逻辑。虽然不知道背后的故事,但我不知道你可能有什么其他限制。