簡體   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