Gibt es eine Möglichkeit, eine MD5-Hash-Zeichenfolge vom Typ varchar (32) ohne Verwendung von fn_varbintohexstr zu generieren?
SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', '[email protected]')), 3, 32)
Es kann also in einer Ansicht mit SCHEMABINDING verwendet werden
sql-server
tsql
sql-server-2008
Trauercodierer
quelle
quelle
Antworten:
quelle
Verwenden Sie HashBytes
Das gibt Ihnen 0xF53BD08920E5D25809DF2563EF9C52B6
- -
Das gibt Ihnen F53BD08920E5D25809DF2563EF9C52B6
quelle
Lösung:
quelle
Keine der anderen Antworten hat bei mir funktioniert. Beachten Sie, dass SQL Server unterschiedliche Ergebnisse liefert, wenn Sie eine fest codierte Zeichenfolge übergeben oder aus einer Spalte in Ihrer Ergebnismenge eingeben. Im Folgenden finden Sie die Magie, die bei mir funktioniert hat, um eine perfekte Übereinstimmung zwischen SQL Server und MySql zu erzielen
quelle
LOWER()
ist nur erforderlich, wenn zwischen Groß- und Kleinschreibung unterschieden wird.MD5
Hash im Vergleich zurMD5()
Funktion vonPostgresql
. Ich habe mich gefragt, warum sich dieMD5
Hashs vonPython
und unterscheidenPostgresql
. Vielen Dank für das Rezept ..Für Daten mit bis zu 8000 Zeichen verwenden Sie:
Demo
Verwenden Sie für Binärdaten (ohne das Limit von 8000 Byte):
Demo
quelle
Versuche dies:
quelle
quelle
funktioniert bei mir.
quelle
Sie haben nicht ausdrücklich gesagt, dass die Zeichenfolge hexadezimal sein soll. Wenn Sie für die platzsparendere Basis-64-Zeichenfolgencodierung offen sind und SQL Server 2016 oder höher verwenden, finden Sie hier eine Alternative:
Dies erzeugt:
quelle