如何在mysql数据库中找到类似的二进制字符串?

时间:2013-10-15 04:04:59

标签: mysql binary hamming-distance

我有一个二进制数据库的数据库

record no 1: 1111111111111011000100110001100100010000000000000011000000000000
record no 2: 1111111111111111111111100001100000010000000000000011000000000000
record no 3: 1110000011110000111010001110111011110000111100001100000011000000
...

所以,我想找出哪个记录​​有类似的bỉnary字符串:1111111111111011000100110001100100010000000000000011000000001100

你可以看到,1号记录的相关性为98%。 记录编号2是70%相关性,记录编号3只有45%相关性。

这是一个庞大的数据库(200.000条记录)......

1 个答案:

答案 0 :(得分:1)

SELECT * FROM MY_TABLE ORDER BY BIT_COUNT(CAST(CONV(record,2,10) as unsigned integer) ^ CAST(b'11...0' as unsigned integer)) LIMIT 1;

上述查询将返回最相似的记录。

你也可以选择BIT_COUNT,它的min = 0表示身份(记录=输入)或100%,它的max = 64表示所有位都不同(记录=〜输入)或0%。