2011-08-11 24 views
0

一個VARBINARY(255)我有一個MySQL表以下字段:按位和/或在MySQL

bitmap varbinary(256) 

我想進行位並在此領域。我想:

select id, Hex(bitmap) from mytable; 
| 735 | 1D1BA8284000000000000000000000000000000000000000000000000000000000 | 
| 736 | 1D1BACA80000000000000000000000000000000000000000000000000000000000 | 

select Hex(bitmap & 0xFFFFFFFFF000000000000000000000000000000000000000000000000000000000) from mytable 

| 735 | 0                      | 
| 736 | 0                      | 

Mysql的總能給0即使這樣,我的專欄是非零

+0

這看起來不像是從mysql直接轉儲,因爲你仍然在底部輸出中顯示ID,儘管沒有選擇它。這讓我想知道還有什麼關於查詢不是你寫的。出於興趣,如果你使用AND或intend,你會得到什麼? –

回答

2

MySQL不會對整個varbinary()字段支持位操作。

the manual

MySQL使用BIGINT(64位)算術對位操作,所以這些操作符具有64位的最大範圍。

可能能夠在同一時間用substr()然後concat與原來包裹感興趣的字節剩餘的字節結果,抽取他們執行單字節操作,即

SELECT CHAR(ASCII(SUBSTR(bitmap, 1, 1)) & 0xff || SUBSTR(bitmap, 2) 

顯然這並不能很好地...