2011-11-28 47 views
1

可能重复:
Creating Nondeterministic functions in SQL Server using RAND()在函数中调用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 

但因为RAND()函数中谁得是确定SQL函数禁止这是行不通的。而兰德()是非确定性的。

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

回答

0

如果您真的需要它,可以使用SQL CLR函数。或者如果你只需要在一个地方,就把它放在存储过程中。

就我个人而言,如果可以帮助的话,我会选择不在SQL Server内部进行这种工作。这是应用程序逻辑,而不是数据库逻辑。虽然不知道背后的故事,但我不知道你可能有什么其他限制。

+0

谢谢,我需要一个SQL函数,因为它不依赖于应用程序。数据混淆脚本允许共享数据库 – bAN