请问如何随机产生一个永不重复的6位数的编码? |
尚未結案
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
|
jerryhung
初階會員 發表:6 回覆:46 積分:30 註冊:2002-12-11 發送簡訊給我 |
引言: 请问guid如何个做法啊?我的6位数是存入资料库的如果是存入資料庫,能會不會使用資料庫本身的亂數功能比較方便啊? 譬如善用SQL的 rand(seed) 功能或者其他功能 引言: 請問各位先進 在SQL中要如何產生6為數的1000組亂數密碼 包括英文與數字 我曾經試圖用產生亂數的方式 但覺得有些麻煩 請問有更方便的方式嗎 -------------------------------------------------------------------------------- 1 回應者: cloudy 日期: 2002/12/13 下午 03:27:00 我到有個建議 你可以用newid()產生一組16位數的亂碼(譬如:6457A492-9582-4F8A-BD85-1DDA1A016BCC,且全世界都不可能重複) 然後用rand()產生兩個位置,然後用迴圈跑1000次,再用 SUBSTRING ( expression , start , length ) 來選擇6位數的亂碼即可 我是沒試過囉,不過建議你可以試試看(要注意start length要在字串的長度內啊),可用的話也請說一聲囉 2 回應者: Loman 日期: 2002/12/16 上午 09:30:00 非常感激 我不了解您所謂的 〝用rand()產生兩個位置〞 是什麼意思 不過我用以下的程式碼也達到了我要的效果了 -------------------------------------- DECLARE @UniPass uniqueidentifier DECLARE @ChrPass varchar(6) DECLARE @Counter INT set @Counter=0 while (@Counter<1000) BEGIN Insert PassTable (PassField) Values (SUBSTRING(CONVERT(varchar(255), NEWID()),1,6)) SET @Counter = @Counter 1 END -------------------------------------- 3 回應者: cloudy 日期: 2002/12/16 下午 05:17:00 我的意思是 因為即使你用newid,也是產生一個16位元的亂碼 即使機率很小,你只取前面六位元的重複機率還是有的,有可能前面六個剛好一樣,後面不一樣而已(只有全部16位元才完全不可能重複) 所以我說用rand()取一個數字當substring的start, 然後length=6 這樣機率至少小很多了,因為你的start可能是1-10(別超過10哦) 不過如果你沒有那麼在乎重複的亂數的話,那就把我的話當參考就好囉 很高興能幫上你囉! 4 回應者: Loman 日期: 2002/12/16 下午 08:46:00 ㄛ~~~~~~ 我了解您的意思了 我之前也有想過這個問題 不過如果是這樣的話 那我還要將newid()中的 '-' 給去除之後 才能以亂數去取吧 不好意思 因為偷懶所以就沒這樣做了 不過 真地謝謝您的說明 我又多學了一樣 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |