MySQL处理大位字段

时间:2014-05-12 11:31:44

标签: mysql

我的目标是将一个256位对象(实际上是一个位域)存储到MySQL中,并能够进行一些按位操作和比较。

理想情况下,我会使用BIT(256)作为类型,但MySQL将位域限制为64位。

我建议的解决方案是为这个字段使用二进制字符串BINARY(32)类型,我可以存储我的对象,但我无法对它们进行操作。

我的表结构是

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `bin` binary(32) NOT NULL,
  PRIMARY KEY (`id`)
) 

然后是查询

SELECT 
bit_count( bin ) AS fullBin, 
bit_count( substring( bin, 0, 4 ) ) AS partialBin
FROM test

总是返回0,因为它不会将我的二进制字符串转换为子字符串,而不是将bit_count用于操作的数字。

我正在寻找一种方法来将二进制字符串的一部分提取为BIGINT或我可以操作的其他类型(我只需要按位ANDbit_count()操作)。

性能方面,我更喜欢不涉及创建字符串并解析它们的解决方案。

我也接受任何将我的数据存储为另一种类型的提议,但是将我的bin列拆分为4个类型为BIT(64)的明显解决方案不是一个选项,因为我必须保留表命名结构。

0 个答案:

没有答案