【发布时间】:2018-11-15 20:40:02
【问题描述】:
我创建了一个这样的函数:
CREATE FUNCTION dbo.HashCheeseName (@CheeseName NVARCHAR(40))
RETURNS VARCHAR(40)
AS BEGIN
DECLARE @Salt VARCHAR(25)
DECLARE @CheeseName NVARCHAR(40)
DECLARE @output VARCHAR(40)
SET @Salt = '123abc11aa'
SET @output = HASHBYTES('SHA2_256', CAST(@CheeseName as VARCHAR(40)) + @Salt)
RETURN @output
END
;
当我刚跑的时候
SELECT HASHBYTES('SHA2_256', CAST('SwissCheese' as VARCHAR(40)) + @Salt)
我得到了一个预期的结果,例如 0xF456D41144584064AC5456B7E3...
但是,当我在查询中运行该函数时
SELECT dbo.HashCheeseName('SwissCheese')
我得到这样的结果:h:Mó!yýŠù’p» ªu_aøP¾æhw
对为什么会导致这样的结果有任何想法吗?乍一看似乎是转换问题,但我没有看到问题
【问题讨论】:
-
...但是你说函数返回
VARCHAR(40)。当然,SQL Server 会将其转换为那个。 (实际类型为VARBINARY(8000)。)
标签: sql-server tsql salt