是否可以部分获取/修改字段


Is it possible to partially get/modify a field?

我正在设置收集长期统计数据。它将被记录在小块,我计划把所有粘贴到一个文本字段,最新的第一…就像这样

[date:03.01.2016,data][date:02.01.2016,data][date:01.01.2016,data]...

它将比这更频繁(只是一个样本),但应该保持足够小,以保持记录几十年,但足够大,使我想要优化它。

我在找两件东西

  1. 你可以添加到mysql字段的前面吗?
  2. 你能部分读取字段吗?例如,只读取前100个字符?

块将是固定长度,所以我可以准确地估计我需要下载多少字符来显示X时间段的统计数据。

你的两个问题的答案是"是":

update t
    set field = concat($newval, field)
    where id = $id;

:

select left(field, 100)
from t
where id = $id;

(假设表中有多行)

也就是说,在关系数据库中,您存储数据的方法绝对不是正确的。

假设,您想要一个看起来像这样的表:

create table t (
    tId int auto_increment primary key,
    creationDate date,
    data <something>
);

(如果data应该是多列,这可能更复杂)

然后插入到表中:

insert into t(createDate, data)
    select $date, $data;

你可以获取最近的行:

select t.*
from t
order by tId desc
limit 1;

所有这些都只是例子,因为你的问题并没有给出数据的全貌。