如何将二进制(16)作为参数传递给mysql函数
我想将varbinary(16)版本的uuid传递给MySQL版本5.7.x中的一个用户定义函数-它会抛出一个错误 1406-数据对列来说太长 我有一个带有如何将二进制(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
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)