我有一个二进制数据库的数据库
record no 1: 1111111111111011000100110001100100010000000000000011000000000000
record no 2: 1111111111111111111111100001100000010000000000000011000000000000
record no 3: 1110000011110000111010001110111011110000111100001100000011000000
...
所以,我想找出哪个记录有类似的bỉnary字符串:1111111111111011000100110001100100010000000000000011000000001100
你可以看到,1号记录的相关性为98%。 记录编号2是70%相关性,记录编号3只有45%相关性。
这是一个庞大的数据库(200.000条记录)......
答案 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%。