Генерирует MD5 хэш строки с T-SQL в
есть ли способ генерировать MD5 хэш-строку типа varchar (32) без использования fn_varbintohexstr
SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', '[email protected]')), 3, 32)
таким образом, он может быть использован внутри представления с SCHEMABINDING
6 ответов:
CONVERT(VARCHAR(32), HashBytes('MD5', '[email protected]'), 2)
использовать HashBytes
SELECT HashBytes('MD5', '[email protected]')это даст вам 0xF53BD08920E5D25809DF2563EF9C52b6
-
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', '[email protected]'),2)это даст вам F53BD08920E5D25809DF2563EF9C52B6
ни один из ответов работал для меня. Обратите внимание, что SQL Server даст разные результаты, если вы передадите жестко закодированную строку или передадите ее из столбца в результирующем наборе. Ниже приведена магия, которая работала для меня, чтобы дать идеальное совпадение между SQL Server и MySql
select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, EmailAddress)), 2)) from ...
для сведения до 8000 символы использовать:
CONVERT(VARCHAR(32), HashBytes('MD5', '[email protected]'), 2)для двоичных данных (без ограничения 8000 байт) используйте:
CONVERT(VARCHAR(32), master.sys.fn_repl_hash_binary(@binary_data), 2)
попробуйте это:
select SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', '[email protected]' )),3,32)источник:http://linesofcode.net/snippets/161
Comments