mysql - 与 mysql 中的 varbinary(255) 进行按位 AND/OR

标签 mysql varbinary

我在 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/

相关文章:

c# - 将 varbinary 转换回 .txt 文件

PHP sqlsrv 从数据库示例中插入/读取 blob(varbinary)字段

mysql - ORDER BY 来自不同表的具有相同选项 ID 的行数

mySQL将多个查询变成单个查询

php - 只需将此日期转换为正确的格式

mysql - 重新排序 MySQL 表中的行

mysql - WordPress:将 MySQL 数据库导入到 MariaDB

python - Django:如何为 MySQL VARBINARY HEX 字段建模?

sql-server - SQL Server 性能 : 50 columns vs single binary/varbinary

java - 如何在 Java 中将字节数组存储到 SQL Server varbinary(MAX) 字段中?