SQL生成随机数

发布时间:2023-05-19

SQL生成随机数的方法总结

一、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()函数则可以生成唯一的标识符,适用于主键生成等场景。