1

BINARY(20) 型を返すストアド関数を作成しようとしています。string、itn、float 値を入れて、この戻り値をフォーマットしたいと思います。しかし、バイナリデータを追加する方法がわかりませんでした。

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 をバイナリとして書き込み、2 行目ではバイナリとして 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 バイトのブロブを返します。これは次の方法で確認できます。

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 に答える