生成六位不相同的密碼

SELECT RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 6)

1、 隨機數: RAND
返回從 0 到 1 之間的隨機 float 值。
語法: RAND ( [ seed ] )
seed
提供種子值的整數表達式(tinyint、smallint 或 int)。如果未指定 seed,則 Microsoft SQL Server 數據庫引擎 隨機分配種子值。對於指定的種子值,返回的結果始終相同。

隨機數是我們經常會用到的,幾乎所有的語言都支持產生隨機數。而且函數都差不多。例如在VBA和VB中也是用RAND,在C#中用RANDOM等等

【注意】我相信很多朋友都對於彩票那些數字很感興趣.其實說白了,那是一個隨機數(如果電腦開票的話). 那麼,如果我們能猜到那個seed,就能模擬出來想要的號碼。這不是天方夜譚,我曾經聽說臺灣就曾經有人這麼做過,而且每期必中。後來據說被逮起來了,說是有內幕交易,其實人家冤枉啊。早期的彩票比較粗糙,確實可能纔出來的。

2、校驗和值:CHECKSUM
返回按照表的某一行或一組表達式計算出來的校驗和值。CHECKSUM 用於生成哈希索引。

語法:CHECKSUM ( * | expression [ ,…n ] )
指定對錶的所有列進行計算。如果有任一列是非可比數據類型,則 CHECKSUM 返回錯誤。非可比數據類型有 text、ntext、image、XML 和 cursor,還包括以上述任一類型作爲基類型的 sql_variant。
expression
除非可比數據類型之外的任何類型的表達式。

返回值是int
CHECKSUM 對其參數列表計算一個稱爲校驗和的哈希值。此哈希值用於生成哈希索引。如果 CHECKSUM 的參數爲列,並且對計算的 CHECKSUM 值生成索引,則結果是一個哈希索引。它可用於對列進行等價搜索。
CHECKSUM 滿足哈希函數的下列屬性:在使用等於 (=) 運算符比較時,如果兩個列表的相應元素具有相同類型且相等,則在任何兩個表達式列表上應用的 CHECKSUM 將返回同一值。對於該定義,指定類型的 Null 值被作爲相等進行比較。如果表達式列表中的某個值發生更改,則列表的校驗和通常也會更改。但只在極少數情況下,校驗和會保持不變。因此,我們不推薦使用 CHECKSUM 來檢測值是否更改,除非應用程序可以容忍偶爾丟失更改。請考慮改用 HashBytes。指定 MD5 哈希算法時,HashBytes 爲兩個不同輸入返回相同結果的可能性比 CHECKSUM 小得多。

表達式的順序影響 CHECKSUM 的結果值。用於 CHECKSUM(*) 的列順序是表或視圖定義中指定的列順序。其中包括計算列。

【注意】這個函數我用的不多。理解不深。但對於它可以把一個文本產生一串數字感覺很有意思。

3、全局唯一編號:NEWID

創建 uniqueidentifier 類型的唯一值。
語法:
NEWID ( )
這個函數總是能返回一個新的GUID號碼,它永遠不會重複,而且毫無規律

最後說點更實際的,這三個函數在一個場合下可以結合起來用

SELECT TOP 10 * FROM Customers
ORDER BY RAND()*CHECKSUM(NEWID())

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章