显然MySQL的CRC32()函数返回无符号BIGINT,而PHP返回十六进制值.
在PHP中:
hash('crc32','hello world') == 7813f744
在MySQL中:
SELECT CRC32('hello world') == 222957957
CRC32值存储在CHAR(8)列中.
我无法弄清楚如何将PHP生成的哈希转换为MySQL 仅用SQL生成的相同值.显而易见的似乎不起作用:
SELECT HEX(CRC32('hello world')) == D4A1185
SELECT CONV('7813f744',16,10) == 2014574404
有任何想法吗?
如果您有 64 位平台,您可以在 PHP 和MySQL 中安全地使用crc32CRC32函数。快速测试:
php > echo crc32('foobar') . "\n";
2666930069
Run Code Online (Sandbox Code Playgroud)
MySQL:
>select crc32('foobar');
+-----------------+
| crc32('foobar') |
+-----------------+
| 2666930069 |
+-----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)