在MySQL/MariaDB中,最有效的存储uuid的方法是在二进制(16)列中。但是,有时您希望将其作为格式化的uuid字符串获得。
给定下表结构,如何以默认格式获得所有uuid?
CREATE TABLE foo (uuid BINARY(16));发布于 2016-05-11 16:49:26
下面将创建我所追求的结果:
SELECT
LOWER(CONCAT(
SUBSTR(HEX(uuid), 1, 8), '-',
SUBSTR(HEX(uuid), 9, 4), '-',
SUBSTR(HEX(uuid), 13, 4), '-',
SUBSTR(HEX(uuid), 17, 4), '-',
SUBSTR(HEX(uuid), 21)
))
FROM foo;发布于 2017-07-13 15:45:56
发布于 2018-02-20 13:53:53
在早期版本(之前的8个版本)中,您可以在函数中创建一个MySQL,如下所示:
CREATE
FUNCTION uuid_of(uuid BINARY(16))
RETURNS VARCHAR(36)
RETURN LOWER(CONCAT(
SUBSTR(HEX(uuid), 1, 8), '-',
SUBSTR(HEX(uuid), 9, 4), '-',
SUBSTR(HEX(uuid), 13, 4), '-',
SUBSTR(HEX(uuid), 17, 4), '-',
SUBSTR(HEX(uuid), 21)
));然后在查询中使用它:
SELECT
uuid_of(id)
name,
age
FROM users它产生了:
(c6f5703b-fec2-43fd-8f45-45f06583d450, Some name, 20)
https://stackoverflow.com/questions/37168797
复制相似问题