萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 隨機字串生成函數完整教學與應用

建立自訂隨機字串函數

在 MySQL 中若需產生指定長度的隨機字串,可建立一個自訂函數 rand_string。以下是完整的建立腳本,包含必要的權限設定與刪除舊函數的邏輯:

SET GLOBAL log_bin_trust_function_creators = 1;
DROP FUNCTION IF EXISTS rand_string;
DELIMITER $$
CREATE FUNCTION rand_string(n INT)
RETURNS VARCHAR(255)
BEGIN
    DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    DECLARE return_str VARCHAR(255) DEFAULT '';
    DECLARE i INT DEFAULT 0;
    WHILE i < n DO
        SET return_str = CONCAT(return_str, SUBSTRING(chars_str, FLOOR(1 + RAND() * 62), 1));
        SET i = i + 1;
    END WHILE;
    RETURN return_str;
END $$
DELIMITER ;

函數原理解析

  • 字元池:包含大小寫英文字母與數字,共 62 個字元。
  • 隨機抽取:透過 RAND() 產生 0~1 亂數,乘以 62 後取整數,對應字元池索引。
  • 迴圈拼接:依傳入長度 n 重複拼接,最終回傳結果。

驗證與查詢

函數建立完成後會綁定於當前資料庫,可用以下指令查看狀態:

SHOW FUNCTION STATUS WHERE Db = 'your_database_name';

測試呼叫範例:SELECT rand_string(10); 將回傳 10 碼隨機字串,如 aB3fG9kL2p。

應用場景

  • 產生唯一邀請碼、驗證碼、臨時密碼
  • 測試資料填充、模擬用戶輸入
  • 需避免衝突的短代碼生成

注意:若在主從複制環境,需確保 log_bin_trust_function_creators 於主從均啟用,否則複制可能失敗。

copyright © 萬盛學電腦網 all rights reserved