我有一個包含大量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