在 MySQL 中生成隨機且唯一的字串
Mehvish Ashiq
2023年1月30日
今天,我們將學習在 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