1

我正在尝试编写一个返回 BINARY(20) 类型的存储函数。我想通过在其中放入字符串、itn、浮点值来格式化这个返回值。但我无法弄清楚如何附加二进制数据。

CREATE FUNCTION `test`() RETURNS binary(20)
BEGIN
declare v binary(20);

set v:= CAST('test' as binary);
set v := v || cast(5 as binary); -- I would like to append 5 as binary but how?

return v;
END

第一行将 test 作为二进制写入,在第二行我想将 5 附加为二进制。我怎样才能做到这一点?谢谢你们..

4

2 回答 2

2

||在 mysql 中是逻辑 OR - 你想使用CONCAT

SET v := CONCAT(v, CAST(5 AS BINARY));

而不是CAST(5 AS BINARY),您可以使用速记BINARY 5

于 2011-03-16T12:50:25.307 回答
0

要连接 5,而不是字符 5,请使用char(5)而不是binary 5. 所以:

select concat("test", char(5))

返回一个 5 字节的 blob。您可以通过以下方式验证这一点:

select length(concat("test", char(5))), hex(concat("test", char(5)));

要将其填充为 20 字节数组:

select convert(concat("test", char(5)), binary(20));

在您的存储过程中,您只需要:

set v:= concat("test", char(5));
于 2015-07-15T01:56:53.873 回答