Advertisement
Lukasz032

MySQL Type 3 GUID generation function

Aug 20th, 2023 (edited)
1,834
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 0.72 KB | Source Code | 0 0
  1. DELIMITER $$
  2. DROP FUNCTION IF EXISTS guidFromNamespace $$
  3. CREATE FUNCTION guidFromNamespace(
  4.     `namespace` BINARY(16),
  5.     `content` VARCHAR(128)
  6. ) RETURNS BINARY(16) DETERMINISTIC
  7. RETURN UNHEX(CONCAT(
  8.     SUBSTR(MD5(CONCAT(namespace,content)),1,12),
  9.     '3',
  10.     SUBSTR(MD5(CONCAT(namespace,content)),14,3),
  11.     CASE
  12.         WHEN SUBSTR(MD5(CONCAT(namespace,content)),17,1) IN ('0','4','c') THEN '8'
  13.         WHEN SUBSTR(MD5(CONCAT(namespace,content)),17,1) IN ('1','5','d') THEN '9'
  14.         WHEN SUBSTR(MD5(CONCAT(namespace,content)),17,1) IN ('2','6','e') THEN 'a'
  15.         WHEN SUBSTR(MD5(CONCAT(namespace,content)),17,1) IN ('3','7','f') THEN 'b'
  16.         ELSE SUBSTR(MD5(CONCAT(namespace,content)),17,1)
  17.     END,
  18.     SUBSTR(MD5(CONCAT(namespace,content)),18,15)
  19. )) $$
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement