使用T-SQL生成MD5哈希string
有没有办法生成MD5types的varchar(32)哈希string,而不使用fn_varbintohexstr
SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'email@dot.com')), 3, 32)
所以它可以在SCHEMABINDING的视图中使用
CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)
使用HashBytes
SELECT HashBytes('MD5', 'email@dot.com')
那会给你0xF53BD08920E5D25809DF2563EF9C52B6
–
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'email@dot.com'),2)
那会给你F53BD08920E5D25809DF2563EF9C52B6
解:
SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5','your text')),3,32)
没有其他答案为我工作。 请注意,如果传递硬编码string,而不是从结果集的列中提供,则SQL Server将提供不同的结果。 下面是为我提供SQL Server和MySql之间完美匹配的魔法
select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, EmailAddress)), 2)) from ...
对于最多8000个字符的数据使用:
CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)
对于二进制数据(没有8000字节的限制)使用:
CONVERT(VARCHAR(32), master.sys.fn_repl_hash_binary(@IMG_PATH), 2)
尝试这个:
select SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', 'email@dot.com' )),3,32)
来源: http : //linesofcode.net/snippets/161