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
函数得到二进制表示。
然后在返回值上使用 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 t set c = unhex(
concat(
substring(HEX(c),1,1),
'1',
substring(HEX(c),3,length(HEX(c)))
)
);
select (HEX(c)) from t;
61000000000000000000
我在 mysql 中的 table 中有一个二进制列。例如,我需要更新所有行。
将第 2 个字节替换为 1。值是什么无关紧要。
SELECT HEX(data) FROM table;
然后
UPDATE table SET data[1] = 1; // the idea
但是在 mysql 中你是怎么做到这样的事情的?
在这里你可以怎么做。首先用 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 t set c = unhex(
concat(
substring(HEX(c),1,1),
'1',
substring(HEX(c),3,length(HEX(c)))
)
);
select (HEX(c)) from t;
61000000000000000000