私はMSSQLのこの断片を持っています -
CONVERT(INT, HASHBYTES('MD5', {some_field}))
...そして、MySQL に相当するものが本当に欲しいです。HASHBYTES('MD5', ...)
このビットは MySQL のものと同じであると確信しています。本当に困惑しているMD5(...)
のはこのビットです。CONVERT(INT, ...)
ありがとう。
私はMSSQLのこの断片を持っています -
CONVERT(INT, HASHBYTES('MD5', {some_field}))
...そして、MySQL に相当するものが本当に欲しいです。HASHBYTES('MD5', ...)
このビットは MySQL のものと同じであると確信しています。本当に困惑しているMD5(...)
のはこのビットです。CONVERT(INT, ...)
ありがとう。
関数のMySQLマニュアルエントリからMD5()
:
値は 32 桁の 16 進数の文字列として返される
NULL
か、引数がNULL
.
CONVERT()
上で引用した MSSQL関数varbinary
は、最下位 4 バイトに切り捨てて、引数を符号付き 32 ビット整数に変換します。MySQL の算術演算は 64 ビットの精度で動作するため、これは少し面倒です。
したがって、MySQL の 16 進数表現 (下位 4 バイトを表す) の右端の 8 桁を取得し、MySQL のCONV()
関数を使用して 10 進数に変換し、結果を符号拡張する必要があります。
CONV(RIGHT(MD5('foo'),8), 16, 10) ^ 0x80000000 - 0x80000000