MySQL, как объединить / добавить двоичный тип данных - PullRequest
0 голосов
/ 16 марта 2011

Я пытаюсь написать хранимую функцию, которая будет возвращать тип BINARY (20). Я хотел бы отформатировать это возвращаемое значение, поместив в него строку, итн, значения с плавающей точкой. Но я не мог понять, как я могу добавить двоичные данные.

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

Первая строка записывает тест в двоичном виде, во вторую строку я хотел бы добавить 5 в двоичном виде. Как я могу это сделать? Спасибо всем ..

Ответы [ 2 ]

2 голосов
/ 16 марта 2011

|| в mysql является логическим ИЛИ - вы хотите использовать CONCAT :

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

вместо CAST(5 AS BINARY), вы можете использовать сокращение BINARY 5.

0 голосов
/ 15 июля 2015

Для конкатенации 5 вместо символа 5 используйте char(5) вместо binary 5.Итак:

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

возвращает двоичный объект размером 5 байт.Вы можете проверить это с помощью:

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));
...