我想在SQL Server2005中获取字符串值的MD5哈希。我使用以下命令来完成此操作:
SELECT HashBytes('MD5', 'HelloWorld')但是,这将返回一个VarBinary而不是VarChar值。如果我尝试将0x68E109F0F40CA72A15E05CC22786F8E6转换为VarChar,我得到的是há ðô§*à\Â'†øæ而不是68E109F0F40CA72A15E05CC22786F8E6。
有没有基于SQL的解决方案?
发布于 2008-08-05 14:26:42
我在其他地方找到了解决方案:
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'HelloWorld')), 3, 32)发布于 2011-01-03 22:26:45
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'Hello World'),2)发布于 2011-03-18 00:00:18
使用master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA1', @input), 1, 0)代替master.dbo.fn_varbintohexstr,然后对结果执行substringing。
实际上,fn_varbintohexstr在内部调用fn_varbintohexsubstring。fn_varbintohexsubstring的第一个参数告诉它是否添加0xF作为前缀。fn_varbintohexstr调用fn_varbintohexsubstring,并将1作为第一个参数internaly。
因为您不需要0xF,所以直接调用fn_varbintohexsubstring。
https://stackoverflow.com/questions/2120
复制相似问题