0

我有一个带有 varchar(64) 字段的数据库表来存储 PHashing 数据,作为64 个字符(1 和 0 的 ascii 字符)。我需要用测试hasta计算汉明距离,似乎最有效的方法是使用mysql bit_count函数。问题是我还没有找到任何方法来转换/转换/任何哈希字段以便被解释为 byte(8) 而不是 varchar(64)。喜欢:

> select hash from data;
"0000000101100111111100011110000011100000111100011011111110011011"
> select convert_to_binary(hash) from data;
0b0000000101100111111100011110000011100000111100011011111110011011

我无法更改数据并将所有以前的数据转换为二进制字段。有什么方法可以强制 mysql 将字段重新解释为文字,或任何其他替代解决方案?

4

2 回答 2

0

我认为您应该能够像这样使用它:

从数据中选择 BIT_COUNT(CAST(hash AS BINARY));

使用CAST将字段转换为BINARY并将结果传递给BIT_COUNT. 将字段哈希转换为二进制会将其转换为具有二进制数据类型的字符串,但BIT_COUNT能够处理它。

于 2014-12-04T14:25:44.373 回答
0

工作代码:

SELECT BIT_COUNT( CONV( hash, 2, 10 ) ^ 
0b0000000101100111111100011110000011100000111100011011111110011011 )
于 2014-12-11T12:50:24.253 回答