所以我有一个625位长的数字存储在MySQL中,只包含0 1和2位数。到目前为止,我发现存储它的最好方法是VARCHAR(625)。我怀疑有更好的方法可以做到,我只是不确定如何。
我想运行一个查询,例如“将文本的第128个字符更改为1”,而不必将文本查询到PHP,从那里更改它,并将新文本写入数据库。
所以问题是:这样做最简单的方法是什么,哪种字段类型最适合这种东西?
提前致谢。
答案 0 :(得分:3)
如果您要执行“将文本的第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))
答案 1 :(得分:1)
如果您只存储数字,为什么不使用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
答案 2 :(得分:1)
您可以使用INSERT()字符串函数
试一试
UPDATE tbl set field = INSERT(field,128,1,'1') where id = primary key
答案 3 :(得分:0)
一个复杂的选择:
将第5个字符替换为主键为30的'r':
update `myTable` set `myField`= regexp_replace(`myField`, '.', 'r', 5, 1) where `id`=30 limit 1