Генерирует MD5 хэш строки с T-SQL в



есть ли способ генерировать MD5 хэш-строку типа varchar (32) без использования fn_varbintohexstr



SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', '[email protected]')), 3, 32)


таким образом, он может быть использован внутри представления с SCHEMABINDING

1096   6  

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

устранение:

SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5','your text')),3,32)

ни один из ответов работал для меня. Обратите внимание, что 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

    Ничего не найдено.