MySQL UUID - Funktion gibt eine UUIDv1 GUID. Ich bin auf der Suche nach eine einfache Möglichkeit zum generieren von GUIDs random (d.h. UUIDv4) in SQL.
Habe ich verbrachte einige Zeit auf der Suche nach einer Lösung und kam auf die folgenden
die mysql-Funktion erzeugt eine zufällige UUID (d.h. UUIDv4) mit standard-MySQL
Funktionen. Ich bin der Beantwortung meiner eigenen Frage zu teilen, in der Hoffnung, dass es dann
nützlich.
-- Change delimiter so that the function body doesn't end the function declaration
DELIMITER //CREATEFUNCTION uuid_v4()
RETURNS CHAR(36)BEGIN-- Generate 8 2-byte strings that we will combine into a UUIDv4SET@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 versionSET@h4 = CONCAT('4', LPAD(HEX(FLOOR(RAND()*0x0fff)),3,'0'));-- 5th section first half-byte can only be 8, 9 A or BSET@h5 = CONCAT(HEX(FLOOR(RAND()*4+8)),
LPAD(HEX(FLOOR(RAND()*0x0fff)),3,'0'));-- Build the complete UUIDRETURN LOWER(CONCAT(@h1,@h2,'-',@h3,'-',@h4,'-',@h5,'-',@h6,@h7,@h8
));END//-- Switch back the delimiter
DELIMITER ;
Hinweis: Die pseudo-random number generation verwendet (MySQL RAND) ist nicht
kryptografisch sichere und hat somit eine gewisse Tendenz, die Erhöhung der Kollision
Risiko.
Vielen Dank! Dies nur mich gerettet eine Menge Zeit!
In der off-chance, dass Sie arbeiten mit einer DB und nicht über Berechtigungen zum erstellen von Funktionen, hier ist die gleiche version wie oben, dass funktioniert genauso wie ein SQL-Ausdruck:
Habe ich verbrachte einige Zeit auf der Suche nach einer Lösung und kam auf die folgenden
die mysql-Funktion erzeugt eine zufällige UUID (d.h. UUIDv4) mit standard-MySQL
Funktionen. Ich bin der Beantwortung meiner eigenen Frage zu teilen, in der Hoffnung, dass es dann
nützlich.
Hinweis: Die pseudo-random number generation verwendet (MySQL
RAND
) ist nichtkryptografisch sichere und hat somit eine gewisse Tendenz, die Erhöhung der Kollision
Risiko.
In der off-chance, dass Sie arbeiten mit einer DB und nicht über Berechtigungen zum erstellen von Funktionen, hier ist die gleiche version wie oben, dass funktioniert genauso wie ein SQL-Ausdruck: