我在 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
最佳答案
MySQL 不支持对整个 varbinary()
字段进行按位运算。
来自the manual :
MySQL uses BIGINT (64-bit) arithmetic for bit operations, so these operators have a maximum range of 64 bits.
您也许能够一次对单个字节执行操作,方法是使用substr()
提取它们,然后使用concat
得到结果最初包装感兴趣字节的剩余字节,即
SELECT CHAR(ASCII(SUBSTR(bitmap, 1, 1)) & 0xff || SUBSTR(bitmap, 2)
显然这不能很好地扩展......
关于mysql - 与 mysql 中的 varbinary(255) 进行按位 AND/OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7021549/