繁体   English   中英

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

[英]Mysql convert varchar binary representation field to binary to do hamming distance calculation with bit_count

我有一个带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将字段重新解释为文字,还是任何其他替代解决方案?

我认为您应该可以像这样使用它:

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

使用CAST将字段转换为BINARY并将结果传递给BIT_COUNT 将字段哈希值转换为二进制值会将其转换为二进制数据类型的字符串,但是BIT_COUNT可以处理该字符串。

工作代码:

SELECT BIT_COUNT( CONV( hash, 2, 10 ) ^ 
0b0000000101100111111100011110000011100000111100011011111110011011 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM