根据模块要求文件名长度为8个字符,为了实现前4个字符DDMM
,剩下的4个字符串试图通过使用函数和视图从数据库中获取随机数,同样我在数据库中使用的是我在下面粘贴的内容:
功能:
CREATE FUNCTION [dbo].[GenerateRandomNumbersLetters]
(
@NumberOfCharacters TINYINT
)
RETURNS VARCHAR(32)
AS
BEGIN
RETURN
(
SELECT LEFT(REPLACE([NewID], '-', ''), @NumberOfCharacters)
FROM dbo.RetrieveNewID
);
END
查看:
CREATE VIEW [dbo].[RetrieveNewID]
AS
SELECT [NewID] = NEWID();
我的查询:
select
SUBSTRING(replace(convert(varchar(10), getdate(), 3), '/', ''), 1, 4) +
dbo.GenerateRandomNumbersLetters(4) as FileNamerandomNUM
例如:0907CCE7
对于每一行它都会提供一个随机数,但在最近的一个场景中随机生成重复项,我怎样才能避免这种情况,请提出建议
答案 0 :(得分:1)
存在值重复的风险'对于随机数,特别是如果你只取一个随机数的前四位数。
而不是那样,生成序列号。要实现这一点,您可以创建一个结构
的表file_date | seq_no
Ex: 0907 | 1000
0907 | 1001
然后每次要获取文件名时,请在此表中查询下一个序列号
select max(seq_no)+1 from <table>