将 HASBYTES 函数输出转换为 CHAR
Convert HASBYTES function output to CHAR
我知道存储 HASHBYTES
函数输出的最佳数据类型是 BINARY/VARBINARY
,但我们希望按照 DataVault 最佳实践的建议将其存储为 CHAR
,此外,并非所有通行费都支持 BINARY
类型的密钥,例如 PowerBI。
那么问题来了,如何转换成CHAR
呢?当我做简单的 CAST/CONVERT
时,我得到不同的输出而不是 HASHBYTES
函数的原始输出。
SELECT CONVERT(CHAR(32), HASHBYTES('MD5', 'test'))
SELECT CAST(HASHBYTES('MD5', 'test') AS CHAR(32))
SELECT HASHBYTES('MD5', 'test')
预期值为 098F6BCD4621D373CADE4E832627B4F6
(不含 0x
),实际值为 kÍF!ÓsÊÞNƒ&'´ö
--convert binary to char without 0x prefix, using style 2
SELECT CONVERT(CHAR(32), HASHBYTES('MD5', 'test'), 2);
我知道存储 HASHBYTES
函数输出的最佳数据类型是 BINARY/VARBINARY
,但我们希望按照 DataVault 最佳实践的建议将其存储为 CHAR
,此外,并非所有通行费都支持 BINARY
类型的密钥,例如 PowerBI。
那么问题来了,如何转换成CHAR
呢?当我做简单的 CAST/CONVERT
时,我得到不同的输出而不是 HASHBYTES
函数的原始输出。
SELECT CONVERT(CHAR(32), HASHBYTES('MD5', 'test'))
SELECT CAST(HASHBYTES('MD5', 'test') AS CHAR(32))
SELECT HASHBYTES('MD5', 'test')
预期值为 098F6BCD4621D373CADE4E832627B4F6
(不含 0x
),实际值为 kÍF!ÓsÊÞNƒ&'´ö
--convert binary to char without 0x prefix, using style 2
SELECT CONVERT(CHAR(32), HASHBYTES('MD5', 'test'), 2);