【问题标题】:using RAND() in a function [duplicate]在函数中使用 RAND() [重复]
【发布时间】:2011-11-28 10:42:48
【问题描述】:

可能重复:
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

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

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

【问题讨论】:

    标签: sql sql-server tsql random sql-function


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我在 sql 函数中需要这个,因为它不依赖于应用程序。这是一个数据混淆脚本允许共享数据库
    猜你喜欢
    • 2019-07-25
    • 1970-01-01
    • 2012-02-05
    • 2013-01-11
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多