显然,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
有什么想法吗?
答案 0 :(得分:2)
如果你有64位平台,你可以安全地使用PHP中的crc32函数和MySQL中的CRC32
。快速测试:
php > echo crc32('foobar') . "\n";
2666930069
MySQL的:
>select crc32('foobar');
+-----------------+
| crc32('foobar') |
+-----------------+
| 2666930069 |
+-----------------+
1 row in set (0.00 sec)
答案 1 :(得分:0)
可以使用返回与mysql中相同值的包装函数:
sample