MySQL 8.0.0 introduces three new miscellaneous UUID functions of IS_UUID(), UUID_TO_BIN() and BIN_TO_UUID() joining the UUID() (in 5.0) and UUID_SHORT() (in 5.1) functions. See 8.0.0 Release Notes .
Thanks to the great work and hosting by Marcus Popp anybody can test out the SQL syntax of MySQL 8.0.0 using db4free without installing anything. If you want a minimal install Giuseppe Maxia provides docker minimal images of 5.0+ versions including 8.0.0.
A running docker container with MySQL 8.0 is as easy as:
The following script shows the usage and checks of these new functions.
Historically, to encode a UUID into a BINARY(16) datatype was to use UNHEX(REPLACE()) syntax. There was however no easy to unencode a BINARY(16) into the original value. BIN_TO_UUID() as shown in the output below solves this problem.
mysql> SELECT IS_UUID(1); +------------+ | IS_UUID(1) | +------------+ | 0 | +------------+ 1 row in set (0.01 sec) mysql> SET @uuid='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'; Query OK, 0 rows affected (0.00 sec) mysql> SELECT IS_UUID(@uuid) AS is_uuid; +---------+ | is_uuid | +---------+ | 1 | +---------+ 1 row in set (0.01 sec) mysql> SELECT IS_UUID(REPLACE(@uuid,'-','')) AS is_uuid; +---------+ | is_uuid | +---------+ | 1 | +---------+ 1 row in set (0.00 sec) mysql> SELECT @uuid_bin := UUID_TO_BIN(@uuid) AS uuid_bin, LENGTH(@uuid_bin) AS len; +------------------+------+ | uuid_bin | len | +------------------+------+ | ���������������� | 16 | +------------------+------+ 1 row in set (0.00 sec) mysql> SELECT @old_uuid_bin := UNHEX(REPLACE(@uuid,'-','')) AS old_uuid_bin, LENGTH(@old_uuid_bin) AS len; +------------------+------+ | old_uuid_bin | len | +------------------+------+ | ���������������� | 16 | +------------------+------+ 1 row in set (0.00 sec) mysql> SELECT @uuid_bin = @old_uuid_bin; +---------------------------+ | @uuid_bin = @old_uuid_bin | +---------------------------+ | 1 | +---------------------------+ 1 row in set (0.00 sec) mysql> SELECT BIN_TO_UUID(@uuid_bin) AS uuid, HEX(@old_uuid_bin) AS uuid_old; +--------------------------------------+----------------------------------+ | uuid | uuid_old | +--------------------------------------+----------------------------------+ | aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee | AAAAAAAABBBBCCCCDDDDEEEEEEEEEEEE | +--------------------------------------+----------------------------------+ 1 row in set (0.01 sec)