Skip to content

Instantly share code, notes, and snippets.

@bplaat
Last active May 1, 2023 17:45
Show Gist options
  • Select an option

  • Save bplaat/1d8d1bba135c726178ebdfc9df08e2ca to your computer and use it in GitHub Desktop.

Select an option

Save bplaat/1d8d1bba135c726178ebdfc9df08e2ca to your computer and use it in GitHub Desktop.
MariaDB UUID_TO_BIN and BIN_TO_UUID pollyfills
DELIMITER //
CREATE FUNCTION UUID_TO_BIN(u CHAR(36))
RETURNS BINARY(16)
BEGIN
IF u IS NULL THEN
RETURN NULL;
END IF;
SET u = REPLACE(u, '-', '');
RETURN CONCAT(
UNHEX(SUBSTR(u, 1, 8)),
UNHEX(SUBSTR(u, 9, 4)),
UNHEX(SUBSTR(u, 13, 4)),
UNHEX(SUBSTR(u, 17, 4)),
UNHEX(SUBSTR(u, 21))
);
END//
CREATE FUNCTION BIN_TO_UUID(b BINARY(16))
RETURNS CHAR(36)
BEGIN
IF b IS NULL THEN
RETURN NULL;
END IF;
RETURN LOWER(CONCAT(
HEX(SUBSTR(b, 1, 4)), '-',
HEX(SUBSTR(b, 5, 2)), '-',
HEX(SUBSTR(b, 7, 2)), '-',
HEX(SUBSTR(b, 9, 2)), '-',
HEX(SUBSTR(b, 11))
));
END//
DELIMITER ;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment