更改MySQL中文本的特定字符

时间:2013-03-23 17:41:13

标签: php mysql

所以我有一个625位长的数字存储在MySQL中,只包含0 1和2位数。到目前为止,我发现存储它的最好方法是VARCHAR(625)。我怀疑有更好的方法可以做到,我只是不确定如何。

我想运行一个查询,例如“将文本的第128个字符更改为1”,而不必将文本查询到PHP,从那里更改它,并将新文本写入数据库。

所以问题是:这样做最简单的方法是什么,哪种字段类型最适合这种东西?

提前致谢。

4 个答案:

答案 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