一、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/n/199150.html