Ich versuche, einen Vergleich auf Hash-Werte (hexadezimale Zeichenfolgen von 16 Zeichen) durchzuführen. Ich habe eine MYSQL-Tabelle, die diese Werte mit einer phash VARCHAR(16)
Spalte speichert. Dies ist, was ich zu tun versucht:Problem mit bitweisem xor + bit_count in mysql
SELECT phash, bit_count(phash^x'dda15873a3de013d') FROM mytable;
Aber die BIT_COUNT + xor ist nicht richtig gemacht. Auch für phash='dda15873a3de013d'
ich 33
als Ergebnis erhalten, während ich 0
(die beiden hex sind die gleichen bekommen sollte, so sollte die xor nur Nullen ergeben, also eine BIT_COUNT von 0.
Was ist falsch? Danke
Edit:.. Beispiel hier =>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 |
+------------------+-----------------------------------------------------+
Funktioniert für mich: http://sqlfiddle.com/#!9/9eecb7d/54806. Welchen Datentyp hat 'phash'? –
Es ist VARCHAR (16) – David
siehe http://sqlfiddle.com/#!9/d7f5c2/1/0 – David