Answers:
我在其他地方找到了解决方案:
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'HelloWorld')), 3, 32)
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'Hello World'),2)
使用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_varbintohexsubstring1
因为不需要0xF,请fn_varbintohexsubstring直接致电。
与David Knight所说的相反,这两种选择在MS SQL 2008中返回相同的响应:
SELECT CONVERT(VARCHAR(32),HashBytes('MD5', 'Hello World'),2)
SELECT UPPER(master.dbo.fn_varbintohexsubstring(0, HashBytes('MD5', 'Hello World'), 1, 0))
因此,从2008版开始,第一个似乎是一个更好的选择。