
摘要:在本教程中,您將學習如何使用 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函式在查詢執行時生成一個偽隨機數。
本教程是否有幫助?