MYSQL中的子串二进制数据

时间:2015-02-15 07:01:09

标签: mysql binary

我在mysql的表中有一个二进制列。我需要更新所有行,例如。

将第二个字节替换为1.无论值是什么都无关紧要。

SELECT HEX(data) FROM table;

然后

UPDATE table SET data[1] = 1; // the idea

但是你怎么在mysql中做这样的事情?

1 个答案:

答案 0 :(得分:0)

在这里你可以做到这一点。首先使用hex函数获取二进制表示。 然后在返回的值上使用substringconcat函数将第二个值替换为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