SQL 服务器哈希字节函数
SQL Server HashBytes Function
谁能告诉我为什么我会得到以下不同的答案:
这是一个非常简单的函数,用于return哈希值:
CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARCHAR(254)
AS
BEGIN
SET @strText = HashBytes('MD5', @strText);
RETURN @strText;
END
这是我的 SQL return 2 个不同的值:
SELECT HashBytes('MD5', '7690') as Hash1
, dbo.fn_GetPin('7690') AS Hash2
结果:
Hash1 Hash2
0xC6776F93BC9AFE2E511A1DBD5478362C Æwo“¼šþ.Q½Tx6,
由于某些原因,该函数 return 与 HASH1 的值不同。
我只是不确定为什么。
谢谢。
更新:
接受的答案如下,我只是将 (max) 添加到 VARBINARY 以 return 整个值。谢谢大家
CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARBINARY(max)
AS
BEGIN
Return HashBytes('MD5', @strText);
END
pvg 几乎把它钉在了上面。
CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARBINARY
AS
BEGIN
SET @strText = HashBytes('MD5', @strText);
RETURN CAST(@strText as VARBINARY);
END
CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARBINARY
AS
BEGIN
Return HashBytes('MD5', @strText);
END
函数应该 return 一个 varbinary
值。
谁能告诉我为什么我会得到以下不同的答案:
这是一个非常简单的函数,用于return哈希值:
CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARCHAR(254)
AS
BEGIN
SET @strText = HashBytes('MD5', @strText);
RETURN @strText;
END
这是我的 SQL return 2 个不同的值:
SELECT HashBytes('MD5', '7690') as Hash1
, dbo.fn_GetPin('7690') AS Hash2
结果:
Hash1 Hash2
0xC6776F93BC9AFE2E511A1DBD5478362C Æwo“¼šþ.Q½Tx6,
由于某些原因,该函数 return 与 HASH1 的值不同。 我只是不确定为什么。
谢谢。
更新:
接受的答案如下,我只是将 (max) 添加到 VARBINARY 以 return 整个值。谢谢大家
CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARBINARY(max)
AS
BEGIN
Return HashBytes('MD5', @strText);
END
pvg 几乎把它钉在了上面。
CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARBINARY
AS
BEGIN
SET @strText = HashBytes('MD5', @strText);
RETURN CAST(@strText as VARBINARY);
END
CREATE Function [fn_GetPin](@strText VARCHAR(254))
RETURNS VARBINARY
AS
BEGIN
Return HashBytes('MD5', @strText);
END
函数应该 return 一个 varbinary
值。