Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo chuỗi 8 ký tự ngẫu nhiên và duy nhất bằng MySQL

Tôi sẽ không bận tâm đến khả năng xảy ra va chạm. Chỉ cần tạo một chuỗi ngẫu nhiên và kiểm tra xem nó có tồn tại hay không. Nếu đúng, hãy thử lại và bạn không cần phải làm điều đó nhiều lần trừ khi bạn đã chỉ định một số lượng lớn đĩa.

Một giải pháp khác để tạo chuỗi giả ngẫu nhiên dài 8 ký tự trong SQL thuần túy (của tôi):

SELECT LEFT(UUID(), 8);

Bạn có thể thử cách sau (mã giả):

DO 
    SELECT LEFT(UUID(), 8) INTO @plate;
    INSERT INTO plates (@plate);
WHILE there_is_a_unique_constraint_violation
-- @plate is your newly assigned plate number

Vì bài đăng này đã nhận được mức độ chú ý ngoài mong đợi, hãy để tôi đánh dấu Nhận xét của ADTC :đoạn mã trên khá khó hiểu và tạo ra các chữ số liên tiếp.

Đối với sự ngẫu nhiên ít ngu ngốc hơn một chút, hãy thử một cái gì đó như thế này thay thế:

SELECT LEFT(MD5(RAND()), 8)

Và đối với tính ngẫu nhiên thực sự (bảo mật bằng mật mã), hãy sử dụng RANDOM_BYTES() chứ không phải là RAND() (nhưng sau đó tôi sẽ xem xét chuyển logic này lên lớp ứng dụng).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cân bằng tải cơ sở dữ liệu-Aware:Cách chuyển từ HAProxy sang ProxySQL

  2. Hàm MySQL LN () - Trả về Logarit tự nhiên của một số

  3. Hiệu suất MySQL - Truy vấn chậm và innodb_buffer_pool_size

  4. 5 truy vấn hữu ích của MySql trong quá trình phát triển dự án

  5. Nhiều truy vấn được thực thi trong java trong một câu lệnh