C’è un modo per generare una stringa MD5 Hash di tipo varchar (32) senza usare fn_varbintohexstr
SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', '[email protected]')), 3, 32)
Quindi potrebbe essere usato all’interno di una vista con SCHEMABINDING
CONVERT(VARCHAR(32), HashBytes('MD5', '[email protected]'), 2)
Usa HashBytes
SELECT HashBytes('MD5', '[email protected]')
Questo ti darà 0xF53BD08920E5D25809DF2563EF9C52B6
–
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', '[email protected]'),2)
Questo ti darà F53BD08920E5D25809DF2563EF9C52B6
Soluzione:
SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5','your text')),3,32)
Nessuna delle altre risposte ha funzionato per me. Si noti che SQL Server fornirà risultati diversi se si passa una stringa hard-coded rispetto a una colonna nel set di risultati. Di seguito è la magia che ha funzionato per me per dare una perfetta corrispondenza tra SQL Server e MySql
select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, EmailAddress)), 2)) from ...
Per i dati fino a 8000 caratteri utilizzare:
CONVERT(VARCHAR(32), HashBytes('MD5', '[email protected]'), 2)
Per i dati binari (senza limite di 8000 byte) utilizzare:
CONVERT(VARCHAR(32), master.sys.fn_repl_hash_binary(@IMG_PATH), 2)
prova questo:
select SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', '[email protected]' )),3,32)