T SQL生成X個不重複的Y位長度的隨機數

2022-04-05 20:14:21 字數 1435 閱讀 4214

mssql隨機數

mssql有乙個函式char()是將int(0-255) ascii**轉換為字元。那我們可以使用下面ms sql語句,可以隨機生成小寫、大寫字母,特殊字元和數字。

大寫字母:

char(round(rand() * 25 + 65,0))

小寫字母:

char(round(rand() * 25 + 97,0))

特殊字元:

char(round(rand() * 13 + 33,0))

數字:

char(round(rand() * 9 + 48,0))

寫乙個儲存過程來應用上面這篇的sql語句:

up_randomnumber

create procedure [dbo].[usp_randomnumber]

(@len int = 1, --隨機數字數

@rows int = 1 --隨機筆數)as

begin

declare @t as table([random number] varchar(max))

declare @l int = 1, @r int = 1

while @r <= @rows

begin

declare @rn varchar(max) = ''

while @l <= @len --隨機產生每個隨數的位數

begin

set @rn = @rn + char(round(rand() * 9 + 48,0))

set @l = @l + 1

end--如果產生相同的隨機數,將不會儲存

if not exists(select [random number] from @t where [random number] = @rn)

begin

insert into @t select @rn --insert into @t ([random number])values (@rn)

set @r = @r + 1 --記錄總共產生了幾筆隨機數

set @l = 1 -- 每產生完乙個隨機數之後,將隨機數的位數初始化為1

endend

select [random number] from @t

end

當你把上面的儲存過程附加入資料庫之後,可以執行這個儲存過程:

execute [dbo].[up_randomnumber] 8,10
得到的結果(由於是隨機產生,每次execute獲得結果會不一樣)

生成4位不重複的字串

實際的業務場景中需要生成4位不重複的字串,這個場景比較特殊,不具有普遍性,正常場景的唯一單號都不會只有4位。最先想到的是隨機生成4位字串,字元包括數字 大小寫字母一共62位,基本可以滿足使用要求,但是越到後面,重複的概率就會越大。想要保證不重複,可以加入時間戳,機器id等,類似雪花演算法的思路,但是...

隨機生成52個不重複的數字

生成五十二個隨機數,存放在陣列中,範圍是1 52,不允許重複,最後在螢幕上顯示出來。小小思路,不成敬意 有專案學習想法的讀者可以利用這個思路研究一下,ai鬥地主等撲克類的遊戲是如何開發的。include include include 生成五十二個隨機數,存放在陣列中,範圍是1 52,不允許重複,最...

Jmeter生成8位不重複的隨機數

預設該公式精確到毫秒級別,13位數 該公式精確到秒級別,10位數 如果引數需要為當前日期,那公式為 要求 對註冊介面進行100000次壓測,手機號已126開頭,後面的8位數不限 前言 在進行測試中,我們需要對註冊介面進行壓測100000次,那麼就要求手機號碼每次填寫的不一致,否則手機號使用一次後會出...