在 MySQL 中生成隨機且唯一的字串

Mehvish Ashiq 2023年1月30日 2022年5月31日
  1. 在 MySQL 中使用 MD5()RAND()SUBSTR() 生成隨機且唯一的字串
  2. 使用 UUID() 在 MySQL 中生成隨機且唯一的字串
在 MySQL 中生成隨機且唯一的字串

今天,我們將學習在 MySQL 中使用各種函式來生成隨機且唯一的字串。這些函式包括 MD5()RAND()SUBSTR()UUID()

在 MySQL 中沒有內建的方法來生成隨機字串,但是有很多其他的方法可以讓我們獲得優勢來滿足要求。在這裡,我們將瞭解在 MySQL 中生成隨機和唯一字串的最簡單和最有效的方法。

在 MySQL 中使用 MD5()RAND()SUBSTR() 生成隨機且唯一的字串

示例程式碼:

SELECT SUBSTR(MD5(RAND()),1,8) AS RandomString;

輸出:

+--------------+
| RandomString |
+--------------+
| 7d192f5f     |
+--------------+
1 row in set (0.00 sec)

MD5() 函式生成引數的 128 位校驗和表示。在上面的例子中,RAND() 函式生成的值是 MD5() 函式的引數; RAND() 函式產生隨機值。

但是,校驗和結果是從傳遞給 MD5() 函式的引數生成的 32 個字母數字字元。此外,我們使用 SUBSTR() 根據我們專案的要求提取 MD5 字串的一部分。

SUBSTR() 採用三個引數:字串、提取的開始位置和長度。在上面的示例程式碼中,我們從第一個字元開始,從 MD5 字串中提取了 8 個字串。

使用 UUID() 在 MySQL 中生成隨機且唯一的字串

示例程式碼:

SELECT LEFT(UUID(), 8)

輸出:

+-----------------+
| LEFT(UUID(), 8) |
+-----------------+
| 4a1f35bc        |
+-----------------+
1 row in set (0.00 sec)

在 MySQL 中生成 8 個字元的字串的另一種方法是 LEFT(UUID(),8),如上所述。RFC 4122(通用唯一識別符號 URN 名稱空間)指定了 UUID()(通用唯一識別符號),它是一個 128 位長值。

它根據時間和空間生成一個全域性唯一的值。由於 UUID() 產生的值是唯一的,因此它們是不可預測或不可猜測的。

這意味著 UUID() 總是生成一個隨機值。我們可以使用以下查詢來獲取 8 或 10 個字元長的字串。

示例程式碼:

-- for 8 characters long string
SELECT LEFT(UUID(),8) random_string ;
-- for 10 characters long string
SELECT RIGHT(UUID(),10) random_string ;

請記住,UUID() 輸出一個十六進位制值,該值由由連字元分隔的五個部分組成。因此,我們可以獲得一個包含數字、連字元和字母的字串,具體取決於所需的字串長度。

示例程式碼:

SELECT UUID(),  LEFT(UUID(), 8), right(uuid(),20);

輸出:

+--------------------------------------+-----------------+----------------------+
| UUID()                               | LEFT(UUID(), 8) | right(uuid(),20)     |
+--------------------------------------+-----------------+----------------------+
| b3e73af1-d811-11ec-b138-d8d09042fdaa | b3e73b03        | ec-b138-d8d09042fdaa |
+--------------------------------------+-----------------+----------------------+
1 row in set (0.00 sec)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相關文章 - MySQL String