MYSQL 中的子字符串二进制数据

Substring Binary Data in MYSQL

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

将第 2 个字节替换为 1。值是什么无关紧要。

SELECT HEX(data) FROM table;

然后

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

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

在这里你可以怎么做。首先用 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 t set c = unhex(
  concat(
    substring(HEX(c),1,1),
    '1',
    substring(HEX(c),3,length(HEX(c)))
  ) 
);

select (HEX(c)) from t;
61000000000000000000