
摘要:在本教程中,您将学习如何使用 SQL RAND 函数在运行时生成一个伪随机数。
SQL RAND 函数简介 #
RAND 函数生成一个介于 0 和 1 之间(含 0 和 1)的伪随机浮点数。下面说明了 RAND 函数的语法:
RAND(seed);Code language: SQL (Structured Query Language) (sql)RAND 函数接受一个可选的整数数据类型的种子参数。如果您在同一个会话中用相同的种子值调用 RAND 函数,该函数将返回完全相同的值。要获得不同的随机数,您必须指定不同的种子值,或使用不同的会话。
如果您省略种子参数,RAND 函数在每次调用之间会返回一个不同的浮点随机数。
请注意,某些数据库系统(例如 PostgreSQL)提供了一个名为 RANDOM 的函数,它等同于 RAND 函数。
SQL RAND 函数示例 #
以下示例展示了如何生成一个介于 0 和 1 之间的随机数。
SELECT RAND();Code language: SQL (Structured Query Language) (sql)如果您多次执行该语句,您将看到不同的随机数。
如果您多次执行以下语句,它会产生完全相同的值,因为 RAND 函数使用了相同的种子值。
SELECT RAND(100);Code language: SQL (Structured Query Language) (sql)生成指定范围内的随机整数 #
要在范围 (n, m) 内生成一个随机整数 R(n <= R < m),您可以将 RAND 函数与 ROUND 函数结合使用,如下所示:
ROUND(n + RAND() * (m − n))Code language: SQL (Structured Query Language) (sql)例如,要获取一个介于 1 和 100 之间的随机数,您可以使用以下语句。
SELECT ROUND(1 + (RAND() * 99)) AS RAND_1_100;Code language: SQL (Structured Query Language) (sql)以随机顺序查询行 #
您可以在 ORDER BY 子句中使用 RAND 函数以随机顺序检索行,如下所示:
SELECT * FROM table_name
ORDER BY RAND();Code language: SQL (Structured Query Language) (sql)要从一组行中选择一个随机样本,您可以在上述语句中添加 LIMIT 子句。以下语句从表中检索 N 个随机行。
SELECT * FROM table_name
ORDER BY RAND()
LIMIT N;Code language: SQL (Structured Query Language) (sql)让我们看一下示例数据库中的 employees 表:

以下语句检索 5 名随机员工。
SELECT
employee_id,
first_name,
last_name
FROM
employees
ORDER BY
RAND ()
LIMIT
5;Code language: SQL (Structured Query Language) (sql) employee_id | first_name | last_name
-------------+------------+-----------
113 | Luis | Popp
204 | Hermann | Baer
179 | Charles | Johnson
110 | John | Chen
111 | Ismael | Sciarra
(5 rows)Code language: SQL (Structured Query Language) (sql)请注意,您应该只在数据量较小的表中用此方法获取随机行。对于大表,这种方式会很慢。
摘要 #
- 使用 SQL
RAND函数在查询运行时生成一个伪随机数。
本教程是否有帮助?