SQL RAND 函式

SQL RAND function

摘要:在本教程中,您將學習如何使用 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 表:

employees_table

以下語句檢索 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 函式在查詢執行時生成一個偽隨機數。
本教程是否有幫助?
© .