สามารถสร้าง Random String ได้ด้วยฟังก์ชัน RAND() และ CHAR() ใน MySQL โดยตรง
Lowercase (a-z)
SELECT CONCAT(
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97),
CHAR(ROUND(RAND()*25)+97)
) AS Random10CharacterString;
ผลลัพธ์ตัวอย่าง
+-------------------------+
| Random10CharacterString |
+-------------------------+
| duscikyspy |
+-------------------------+
Uppercase (A-Z)
SELECT CONCAT(
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65),
CHAR(ROUND(RAND()*25)+65)
) AS Random10CharacterString;
ผลลัพธ์ตัวอย่าง
+-------------------------+
| Random10CharacterString |
+-------------------------+
| WMWWVOIXPF |
+-------------------------+
วิธีที่สะดวกกว่า: ใช้ SUBSTRING + MD5/RAND
-- ใช้ MD5 ของ RAND() แล้ว取 10 ตัวแรก
SELECT SUBSTRING(MD5(RAND()), 1, 10) AS random_str;
-- ผลลัพธ์: a1b2c3d4e5 (Hex: 0-9, a-f)
-- หรือ SHA2
SELECT SUBSTRING(SHA2(RAND(), 256), 1, 10);
วิธีที่ดีที่สุดสำหรับ Production: UUID()
-- UUID v1 (มี Timestamp + MAC)
SELECT UUID();
-- 550e8400-e29b-41d4-a716-446655440000
-- UUID_SHORT() - 64-bit Integer
SELECT UUID_SHORT();
-- 92395783831150593
สร้าง Function สำหรับใช้ซ้ำ
DELIMITER //
CREATE FUNCTION GenerateRandomString(length INT)
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE result VARCHAR(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < length DO
SET result = CONCAT(result, CHAR(ROUND(RAND()*25)+97));
SET i = i + 1;
END WHILE;
RETURN result;
END //
DELIMITER ;
-- ใช้งาน
SELECT GenerateRandomString(10);
⚠️ ข้อควรระวัง
RAND()ไม่ Cryptographically Secure - ห้ามใช้สำหรับ Token/Password/Secret- สำหรับ Security Token ใช้
UUID()หรือ Application Layer (openssl_random_pseudo_bytes, random_bytes) - Function นี้ Non-deterministic - ไม่สามารถใช้ใน Generated Column / Partition ได้