5

私はMSSQLのこの断片を持っています -

CONVERT(INT, HASHBYTES('MD5', {some_field}))

...そして、MySQL に相当するものが本当に欲しいです。HASHBYTES('MD5', ...)このビットは MySQL のものと同じであると確信しています。本当に困惑しているMD5(...)のはこのビットです。CONVERT(INT, ...)

ありがとう。

4

1 に答える 1

6

関数の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
于 2012-08-29T15:26:15.140 に答える