Mysql将varchar二进制表示字段转换为二进制,用bit_count进行汉明距离计算

时间:2014-12-04 11:51:36

标签: mysql string binary hamming-distance bitcount

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

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

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

2 个答案:

答案 0 :(得分:0)

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

  

SELECT BIT_COUNT(CAST(hash AS BINARY))FROM data;

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

答案 1 :(得分:0)

工作代码:

SELECT BIT_COUNT( CONV( hash, 2, 10 ) ^ 
0b0000000101100111111100011110000011100000111100011011111110011011 )
相关问题