1

我有一个带有二进制这些字符串的数据库

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

所以,我想找出什么记录有类似的二进制字符串:1111111111111011000100110001100100010000000000000011000000001100

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

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

4

1 回答 1

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 表示身份(record=input)或 100%,它的 max=64 表示所有位不同(record = ~input)或 0%。

于 2013-10-15T04:45:21.110 回答