如何将二进制 (16) 作为参数传递给 mysql 函数
How to pass binary (16) to a mysql function as an argument
我想将版本 varbinary(16) 的 uuid 传递给 MySQL 版本 5 中的用户定义函数。7.x - 它抛出错误
1406 - Data too long for column
我有一个 table,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
return 类型是 varchar(32)
,但添加连字符后,您 return 的文本长度为 36 个字符。
将 return 类型更改为 varchar(36)
。
我想将版本 varbinary(16) 的 uuid 传递给 MySQL 版本 5 中的用户定义函数。7.x - 它抛出错误
1406 - Data too long for column
我有一个 table,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
return 类型是 varchar(32)
,但添加连字符后,您 return 的文本长度为 36 个字符。
将 return 类型更改为 varchar(36)
。