2

なぜ私が次のことについて異なる答えを得ているのか誰か教えてください:

ハッシュ値を返すために使用される非常に単純な関数を次に示します。

CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARCHAR(254)
AS
BEGIN
    SET @strText = HashBytes('MD5', @strText);
    RETURN @strText;
END

2つの異なる値を返す私のSQLは次のとおりです。

SELECT HashBytes('MD5', '7690') as Hash1
        , dbo.fn_GetPin('7690') AS Hash2

結果:

Hash1   Hash2
0xC6776F93BC9AFE2E511A1DBD5478362C  Æwo“¼šþ.Q½Tx6,

何らかの理由で、関数は HASH1 と同じ値を返しません。理由はわかりません。

ありがとう。

アップデート:

受け入れられた回答は以下のとおりです。VARBINARY に (max) を追加して、値全体を返しました。皆さんありがとう。

CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARBINARY(max)
AS
BEGIN
    Return HashBytes('MD5', @strText);
END
4

2 に答える 2