显然MySQL的CRC32()函数返回一个无符号BIGINT,而PHP返回十六进制值。如何将PHP的crc32哈希转换为等价的MySQL?
在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
任何想法?
我想你可能需要使用'哈希( 'crc32b',...)'。这里检查的第一个评论:http://www.php.net/manual/en/function.hash.php#107920 – Aziz
就像我说的,我想这样做在SQL,而不必在PHP中做任何事情,因为我可能担心的是转换现有的数据。 – DanMan
我其实认为我误解了你的问题。我以为你正在从MySQL和PHP获得不同的哈希值。让我看看几件事... – Aziz