如何按位OR进入二进制(100)?

时间:2011-06-27 20:57:58

标签: mysql

我有一个binary(100),我想用一个常量按位或只是其中一个字节。

知道如何做到这一点吗?

或者,如何将值存储到binary(100)

的字节中

1 个答案:

答案 0 :(得分:2)

首先,考虑BINARY实际上是否是合适的字段类型。与BLOB相比,它具有剥离尾随空格的潜在讨厌“特征”。 BINARY实际上只是一个不区分大小写的二进制文本字符串,而不是任意二进制数据的blob。

如果您使用blob,则需要使用SUBSTRING()运算符与ASCII()结合使用,只提取所需的字节,然后使用|按位运算符。< / p>

要在第二个字节中设置内容,您需要使用以下内容:

UPDATE TABLE SET col = CONCAT(
   SUBSTR(col, 1, 1),
   CHAR(ASCII(SUBSTR(col, 2, 1) | 0x80)),
   SUBSTR(col, 3)
)

一个可能更简单的解决方案可能是将您的100个字节视为12.5个64位(即BIGINT),然后对单个单词使用直接按位运算。