MySQL相当于MSSQL CONVERT()

Jez*_*Jez 5 mysql sql-server

我有这个MSSQL片段 -

CONVERT(INT, HASHBYTES('MD5', {some_field}))
Run Code Online (Sandbox Code Playgroud)

...而且我真的很喜欢MySQL等价物.我很确定这HASHBYTES('MD5', ...)一点与MySQL的相同MD5(...)- 这CONVERT(INT, ...)真的令我感到困惑.

谢谢.

egg*_*yal 6

从MySQL手册输入的MD5()功能:

该值以32个十六进制数字的字符串形式返回,或者NULL如果参数为NULL.

CONVERT()您在上面引用的MSSQL 函数varbinary通过截断为4个最低位字节将其参数转换为带符号的32位整数.这有点令人讨厌,因为MySQL算法可以达到64位精度.

因此,我们必须使用MySQL的十六进制表示的最右边8位数(表示4个最低位字节)并使用MySQL的CONV()函数转换为十进制,然后对结果进行符号扩展:

CONV(RIGHT(MD5('foo'),8), 16, 10) ^ 0x80000000 - 0x80000000
Run Code Online (Sandbox Code Playgroud)