我有一个包含大量2048位二进制字符串(例如'0111001 ... 0101')的MySQL数据库。我需要的一个计算是这些字符串的汉明距离(在XOR'd结果中的总数为1)与一些外部生成的比特串相比较。为了了解如何编写这个查询,我试着写了一个更小的位串。下面是一个示例:在MySQL中对大字符串执行按位操作?
select BIT_COUNT(bin((b'0011100000')^(b'1111111111')))
计算异或的内部工作正常,但BIT_COUNT返回奇怪的结果。这个例子返回14,它比字符串本身更长。
所以,我有几个问题:
首先,为什么是BIT_COUNT返回这样奇怪的结果。它是使用字符串而不是二进制字符串来操作吗?如果是这样,我该如何处理?
第二,请注意我正在铸造(这是否是正确的词?)字符串作为二进制前面加上b。我将如何与列名和变量做到这一点?很明显,我不能简单地将b预先加入变量名称,而且我也不能在它们之间插入空格。有任何想法吗?
感谢,
编辑: 所以这里的第一个问题的解决方案:
select BIT_COUNT(b'0011100000'^b'1111111111')
似乎使用这种较大的字符串(2048位)时,是一个问题。我想:
select BIT_COUNT(b'001110...00011')
,这让我产生像28,当实际比特计数应该在1024如果我删除了B,那么它似乎最大输出为64。如何解决这个任何想法问题?
蝙蝠 - 你有没有找到一个解决这个? – ChrisB