如何将二进制(16)作为参数传递给mysql函数

如何将二进制(16)作为参数传递给mysql函数,mysql,binary,uuid,mysql-5.7,mysql-function,Mysql,Binary,Uuid,Mysql 5.7,Mysql Function,我想将varbinary(16)版本的uuid传递给MySQL版本5.7.x中的一个用户定义函数-它会抛出一个错误 1406-数据对列来说太长 我有一个带有uuid主键的表,主键类型为varbinary(16)-我想将二进制(16)转换为人类可读的版本,因此我编写了一个函数来转换二进制版本 CREATE DEFINER=`bala`@`localhost` FUNCTION `bin_to_uuid`(`uuid` BINARY(32)) RETURNS varchar(32) CH

我想将varbinary(16)版本的uuid传递给MySQL版本5.7.x中的一个用户定义函数-它会抛出一个错误

1406-数据对列来说太长

我有一个带有
uuid
主键的表,主键类型为
varbinary(16)
-我想将二进制(16)转换为人类可读的版本,因此我编写了一个函数来转换二进制版本

CREATE DEFINER=`bala`@`localhost` 
FUNCTION `bin_to_uuid`(`uuid` BINARY(32)) 
    RETURNS varchar(32) CHARSET latin1
NO SQL
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 bin_to_uuid((UNHEX(REPLACE(uuid(), "-",""))))

MySQL版本5.7.x

返回类型为
varchar(32)
,但添加连字符后,返回的文本长度为36个字符

将返回类型更改为
varchar(36)