我有一个binary(100)
,我想用一个常量按位或只是其中一个字节。
知道如何做到这一点吗?
或者,如何将值存储到binary(100)
?
答案 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
),然后对单个单词使用直接按位运算。