我在mysql的表中有一个二进制列。我需要更新所有行,例如。
将第二个字节替换为1.无论值是什么都无关紧要。
SELECT HEX(data) FROM table;
然后
UPDATE table SET data[1] = 1; // the idea
但是你怎么在mysql中做这样的事情?
答案 0 :(得分:0)
在这里你可以做到这一点。首先使用hex
函数获取二进制表示。
然后在返回的值上使用substring
和concat
函数将第二个值替换为1
,最后更新。
这是一个例子。
CREATE TABLE t (c BINARY(10));
INSERT INTO t SET c = 'b';
select (HEX(c)) from t;
62000000000000000000
SELECT concat(
substring(HEX(c),1,1),
'1',
substring(HEX(c),3,length(HEX(c)))
)
from t
61000000000000000000
现在将所有内容放在update命令中将替换值
update t set c = unhex(
concat(
substring(HEX(c),1,1),
'1',
substring(HEX(c),3,length(HEX(c)))
)
);
select (HEX(c)) from t;
61000000000000000000