所以我有一个 625 位长的数字要存储在 MySQL 中,它只包含 0 1 和 2 位数字。到目前为止,我发现存储它的最佳方式是 VARCHAR(625)。我怀疑有更好的方法来做到这一点,我只是不确定如何。
我想运行诸如“将文本的第 128 个字符更改为 1”之类的查询,而不必将文本查询到 PHP,从那里进行更改,然后将新文本写入数据库。
所以问题是:最简单的方法是什么,什么字段类型最适合这种东西?
提前致谢。
如果您要执行“将文本的第 128 个字符更改为 1”之类的操作,那么我建议将数据类型保留为 VARCHAR(625)。如果长度始终为 625,那么您可以使用 CHAR。
这会将 MySQL 中的第 128 个字符更改为 1:
UPDATE your_table set your_column =
CONCAT(SUBSTRING(your_column, 1, 127), '1', SUBSTRING(your_column, 129))
您可以使用 INSERT() 字符串函数
试试看
UPDATE tbl set field = INSERT(field,128,1,'1') where id = primary key
如果您只存储数字,为什么不使用 int(625) 而不是 varchar?
您可以使用替换命令,但您必须知道用什么替换
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);
如果您不知道要替换的确切内容,可以将“用此字符串替换找到的字符串”替换为子查询。使用 length 和 substr 来拆分,替换你想要的,然后重新连接在一起。
这个例子应该使我所说的更有意义 http://sqlfiddle.com/#!2/dbc21/2/0quey
一个复杂的替代方案:
将第 5 个字符替换为 'r',其中主键为 30:
update `myTable` set `myField`= regexp_replace(`myField`, '.', 'r', 5, 1) where `id`=30 limit 1