一、SQL生成隨機數組
有時候我們需要生成一個隨機數組,SQL可以通過RAND()函數來實現,代碼如下:
SELECT RAND(), RAND(), RAND(), RAND(), RAND();
運行結果如下:
+-------------------+-------------------+-------------------+-------------------+-------------------+ | (No column name) | (No column name) | (No column name) | (No column name) | (No column name) | +-------------------+-------------------+-------------------+-------------------+-------------------+ | 0.732931303303814 | 0.74820671508723 | 0.105758390980154 | 0.252249759248054 | 0.716748049206193 | +-------------------+-------------------+-------------------+-------------------+-------------------+
使用RAND()函數可以生成隨機數,可以通過調節函數參數的值來改變數組的長度。
二、SQL生成隨機數函數
SQL中使用NEWID()函數可以隨機生成唯一標識符GUID,代碼如下:
SELECT NEWID();
運行結果如下:
+------------------------------------+ | (No column name) | +------------------------------------+ | 56931D8B-D8B9-4E12-A5F5-72A5F9A4808C | +------------------------------------+
此外,SQL還可以使用CHECKSUM(NEWID())+RAND()函數來生成更加隨機的數,代碼如下:
SELECT CHECKSUM(NEWID())+RAND();
運行結果如下:
+-------------------+ | (No column name) | +-------------------+ | 819817.2271732586 | +-------------------+
三、SQL Server生成隨機數
SQL Server也可以通過RAND()函數來生成隨機數,代碼如下:
SELECT TOP 5 RAND() FROM sys.objects
運行結果如下:
+-------------------+ | (No column name) | +-------------------+ | 0.328835954798927 | | 0.81008264599312 | | 0.168698469141455 | | 0.819490681617023 | | 0.854878276886284 | +-------------------+
四、SQL生成隨機數主鍵
當我們需要為表生成主鍵時,可以使用如下代碼,用HASHBYTES()函數生成一個唯一的哈希值:
ABS(CAST(
HASHBYTES('MD5', CAST(NEWID() AS varchar(36))) AS BIGINT))
% POWER(10, 9) AS RandomNumber
上述代碼中,CAST(NEWID() AS varchar(36))為將NEWID()函數生成的唯一標識符轉為字符串,HASHBYTES(‘MD5’, CAST(NEWID() AS varchar(36)))使用哈希算法MD5計算字符串的哈希值,最後CAST函數將哈希值轉為BIGINT類型,用來保存數據。運行結果如下:
+-------------+ | RandomNumber | +-------------+ | 814962981 | | 997601035 | | 48135846 | | 669021128 | | 625812846 | +-------------+
五、SQL生成隨機數字
如果我們需要生成指定位數的隨機數字,可以使用如下代碼:
SELECT LEFT(CAST(RAND() AS varchar(20)), @DigitCount) AS RandomNumber
其中@DigitCount為指定的數字位數。運行結果如下:
+----------------+ | RandomNumber | +----------------+ | 0.327442537481 | +----------------+
六、SQL生成隨機數函數sys.fn_RandomBytes
SQL還提供了內置的函數sys.fn_RandomBytes,用於生成隨機位元組序列。代碼如下:
SELECT sys.fn_RandomBytes(8)
運行結果如下:
+------+ | | +------+ | 0xEC | | 0xCB | | 0x51 | | 0x1F | | 0x43 | | 0x75 | | 0xC2 | | 0x3D | +------+
七、SQL語句生成隨機數
使用如下代碼可以生成指定範圍內的隨機數:
SELECT RAND() * (@MaxValue - @MinValue) + @MinValue AS RandomNumber
其中@MaxValue和@MinValue為指定的隨機數範圍。運行結果如下:
+--------------+ | RandomNumber | +--------------+ | 0.845346204 | +--------------+
八、SQL語句生成32位隨機數
SQL語句生成32位隨機數代碼如下:
SELECT UPPER(CONVERT(char(8), NEWID(), 1) + REPLACE(CONVERT(char(23), NEWID(), 1), '-', '')) AS RandomNumber
運行結果如下:
+----------------------------------+ | RandomNumber | +----------------------------------+ | 850A80CF791D476C9DFCC423F8D7C57E | +----------------------------------+
九、SQL隨機數
使用如下代碼可以生成0到1之間的隨機數:
SELECT CAST(CRYPT_GEN_RANDOM(1) AS INT) % 100 AS RandomNumber
運行結果如下:
+--------------+ | RandomNumber | +--------------+ | 80 | +--------------+
結論
SQL中有多種方式可以生成隨機數,我們可以根據具體的需求選擇適合的方法。其中RAND()函數是最常用的方法之一,可以生成較高質量的隨機數,而NEWID()函數則可以生成唯一的標識符,適用於主鍵生成等場景。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/199150.html