回答:
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を与えます
他の答えはどれもうまくいきませんでした。SQL Serverは、ハードコードされた文字列を渡す場合と、結果セットの列からフィードする場合とで、結果が異なることに注意してください。以下は、SQL ServerとMySqlを完全に一致させるために私が働いた魔法です
select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, EmailAddress)), 2)) from ...
LOWER()
大文字と小文字が区別される場合にのみ使用する必要があります。
MD5
、のMD5()
関数と比較して同一のハッシュが得られますPostgresql
。なぜMD5
ハッシュがPython
とと違うのか不思議でしたPostgresql
。レシピをありがとう..
declare @hash nvarchar(50)
--declare @hash varchar(50)
set @hash = '1111111-2;20190110143334;001' -- result a5cd84bfc56e245bbf81210f05b7f65f
declare @value varbinary(max);
set @value = convert(varbinary(max),@hash);
select
SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', '1111111-2;20190110143334;001')),3,32) as 'OK'
,SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', @hash)),3,32) as 'ERROR_01'
,SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5',convert(varbinary(max),@hash))),3,32) as 'ERROR_02'
,SUBSTRING(sys.fn_sqlvarbasetostr(sys.fn_repl_hash_binary(convert(varbinary(max),@hash))),3,32)
,SUBSTRING(sys.fn_sqlvarbasetostr(master.sys.fn_repl_hash_binary(@value)),3,32)