我正在尝试对哈希值(16 个字符的十六进制字符串)进行比较。我有一个 MYSQL 表,它用一phash VARCHAR(16)
列存储这些值。这就是我想要做的:
SELECT phash, bit_count(phash ^ x'dda15873a3de013d') FROM mytable;
但是 bit_count + xor 没有正确完成。即使phash='dda15873a3de013d'
我得到33
了我应该得到的结果0
(两个十六进制是相同的,所以异或应该只产生零,因此 bit_count 为 0。
怎么了?谢谢
编辑:这里的例子=> http://sqlfiddle.com/#!9/d7f5c2/1/0
mysql> SELECT phash,BIT_COUNT(CONV(phash, 16, 10) ^ 0xdda15873a3de012d) from mytable limit 1;
+------------------+-----------------------------------------------------+
| phash | BIT_COUNT(CONV(phash, 16, 10) ^ 0xdda15873a3de012d) |
+------------------+-----------------------------------------------------+
| dda15873a3de012d | 33 |
+------------------+-----------------------------------------------------+