因此,我有一个625位数字的长号码存储在MySQL中,只包含0个1位和2位数字。到目前为止,我发现存储它的最好方式是VARCHAR(625)。我怀疑有更好的方法来做到这一点,我只是不知道如何。更改MySQL中文本的特定字符
我想运行一个查询,如“将文本的第128个字符更改为1”,而不必将文本查询到PHP中,然后从中更改并将新文本写入数据库。
所以问题是:做这件事最简单的方法是什么,以及哪种字段类型对于这类东西是最优的?
在此先感谢。
因此,我有一个625位数字的长号码存储在MySQL中,只包含0个1位和2位数字。到目前为止,我发现存储它的最好方式是VARCHAR(625)。我怀疑有更好的方法来做到这一点,我只是不知道如何。更改MySQL中文本的特定字符
我想运行一个查询,如“将文本的第128个字符更改为1”,而不必将文本查询到PHP中,然后从中更改并将新文本写入数据库。
所以问题是:做这件事最简单的方法是什么,以及哪种字段类型对于这类东西是最优的?
在此先感谢。
可以用户INSERT()字符串函数
试试看
UPDATE tbl set field = INSERT(field,128,1,'1') where id = primary key
如果你要做的事情就像“将文本的第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))
谢谢。我尝试了CHAR,但是它只能达到255,显然... – 2013-03-23 17:57:06
就像 - 如果CHAR的值不是*和列一样长,那么迟早会出现问题。顺便说一句,从@new_developer中选择答案作为“最佳答案”是正确的 - 我忽略了'INSERT',这正是它为之制定的情况:) – 2013-03-23 18:10:29
如果你只存储号码,为什么不使用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
是否也替代int的工作? – 2013-03-23 17:57:30
尝试它在sqlfiddle,让我们知道 – beardedlinuxgeek 2013-03-23 18:00:30
似乎并不... – 2013-03-23 18:43:54
HTTP的重复:// stackoverflow.com/questions/9813712/changing-a-specific-char-in-a-mysql-string。你会在那里找到你的答案。 – 2013-03-23 17:49:41
不完全是,但是非常...我看了看周围,但没有找到任何东西。谢谢你 – 2013-03-23 18:00:12
那是不是你想要的?请扩展它。 – 2013-03-23 18:01:55