Hàm UUID
của MySQL trả về UUIDv1 GUID. Tôi đang tìm kiếm một cách dễ dàng để tạo GUID ngẫu nhiên (ví dụ: UUIDv4) trong SQL.Cách tạo UUIDv4 trong MySQL?
6
A
Trả lời
10
Tôi đã dành nhiều thời gian tìm kiếm giải pháp và đã đưa ra chức năng mysql sau đây tạo ra một UUID ngẫu nhiên (tức là UUIDv4) sử dụng các hàm chuẩn của MySQL . Tôi đang trả lời câu hỏi của riêng tôi để chia sẻ với hy vọng rằng nó sẽ là hữu ích.
-- Change delimiter so that the function body doesn't end the function declaration
DELIMITER //
CREATE FUNCTION uuid_v4()
RETURNS CHAR(36)
BEGIN
-- Generate 8 2-byte strings that we will combine into a UUIDv4
SET @h1 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0');
SET @h2 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0');
SET @h3 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0');
SET @h6 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0');
SET @h7 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0');
SET @h8 = LPAD(HEX(FLOOR(RAND() * 0xffff)), 4, '0');
-- 4th section will start with a 4 indicating the version
SET @h4 = CONCAT('4', LPAD(HEX(FLOOR(RAND() * 0x0fff)), 3, '0'));
-- 5th section first half-byte can only be 8, 9 A or B
SET @h5 = CONCAT(HEX(FLOOR(RAND() * 4 + 8)),
LPAD(HEX(FLOOR(RAND() * 0x0fff)), 3, '0'));
-- Build the complete UUID
RETURN LOWER(CONCAT(
@h1, @h2, '-', @h3, '-', @h4, '-', @h5, '-', @h6, @h7, @h8
));
END
//
-- Switch back the delimiter
DELIMITER ;
Lưu ý: Các hệ số giả ngẫu nhiên được sử dụng (MySQL của RAND
) không phải là mã hóa an toàn và do đó có một số sai lệch có thể làm tăng sự va chạm rủi ro.
Các vấn đề liên quan
- 1. Cách tạo kích hoạt MySQL trong phpmyadmin
- 2. cách tái tạo lại/tự động tái tạo trong mysql
- 3. Tạo "Bảng số" trong mysql
- 4. Làm cách nào để tạo bí danh bảng trong MySQL
- 5. cách tạo trường được tính toán trong mysql?
- 6. Làm cách nào để tạo chuỗi trong MySQL?
- 7. Làm cách nào để tạo id duy nhất trong MySQL?
- 8. Cách tạo truy vấn MySQL tùy chỉnh trong CakePHP?
- 9. Cách tạo truy vấn trả lời nhận xét trong MYSQL?
- 10. Làm cách nào để tạo chỉ mục DESC trong MySQL?
- 11. Làm cách nào để tạo dữ liệu trong MySQL?
- 12. Tạo một dãy số trong MySQL
- 13. Tạo loại biến ENUM trong MySQL
- 14. tạo ràng buộc bảng trong mysql
- 15. Cách tạo cột ảo bằng cách sử dụng MySQL SELECT?
- 16. Mysql TẠO DEFINER
- 17. TẠO LOẠI trên MySQL
- 18. Làm cách nào để tạo một trình tạo hàng trong MySQL?
- 19. chức năng mysql trong trình tạo truy vấn trong laravel
- 20. cách tạo ứng dụng mysql php hoạt động ngoại tuyến
- 21. Tạo dấu phẩy bằng MySQL?
- 22. Tạo nhiều bảng MySQL bằng cách sử dụng PHP
- 23. Mysql tạo phân phối freqency
- 24. Cách tạo SQL Script từ MySQL Workbench bằng Command Line?
- 25. cách tạo cơ sở dữ liệu mysql từ vải động
- 26. Cách tạo hồ sơ người dùng bằng PHP và MySQL
- 27. Cách khôi phục/tạo lại cơ sở dữ liệu 'mysql' mặc định của mysql
- 28. Cách bật INNODB trong mysql
- 29. Tạo một thủ tục MySQL
- 30. Làm cách nào để tạo một trường trong MySql tự động tăng trong PHPMyAdmin?