[原由] :想在ms sql 建立函數 能產生我想指定的亂數字串
例如 select fnGenRandWord() <--想要的方式 自訂函數 fnGenRandWord()
得出 指定的字串 "20230328+(指定範圍內亂數)" <--想要的指定字串+亂數
但 create function 時 都會出現
"在函數中使用副作用運算子 'rand' 無效。"
試過了 newid(),Crypt_Gen_Random 也一樣。
我以前曾經這樣做過:
1.把內建函數,寫成一個view。
2.自訂函數function,去select這個view。
CREATE VIEW [dbo].[Rand_view]
AS
SELECT RAND() as myRand
GO
CREATE FUNCTION [dbo].[GetRnd]
(
@name varchar(10)
)
RETURNS @table table
(
result VARCHAR(50)
)
AS
BEGIN
INSERT INTO @table (result)
SELECT @name+'-'+convert(varchar,myRand) from [Rand_view]
RETURN
END
GO
select * from GetRnd('user')
-->user-0.28329
謝謝回答
但我希望傳回的是 varchar 型態 而非table
我想想看怎麼從您的建議(1.把內建函數,寫成一個view。)來改
Create FUNCTION [dbo].[GetRnd]
(
@name nvarchar(10)
)
RETURNS nvarchar(100)
AS
BEGIN
Declare @result nvarchar(100)
SELECT @result=@name+'-'+convert(varchar,myRand)
from [Rand_view]
RETURN @result
END
GO
select dbo.GetRnd('user')
謝謝! 成功了!