更新多行替换mysql中某个位置的字符

时间:2012-03-01 15:11:15

标签: mysql sql design-patterns field

想象一下,你有一个包含大量字段的列:

ab
abc
abcd
...

我想使用单个查询将这些字段转换为以下内容:

a_b
ab_c
abc_d
...

也就是说,在最后一个字母之前插入一个下划线。

我可以一个接一个地做到这一点:

update test set name = 'a_b' where name ='ab';
update test set name = 'ab_c' where name ='abc';
update test set name = 'abc_d' where name ='abcd';

但是要更新大量字段,我认为必须有更好的方法来实现这一点。

3 个答案:

答案 0 :(得分:3)

尝试此查询 -

UPDATE test SET name = INSERT(name, LENGTH(name), 0, '_');

答案 1 :(得分:1)

使用一些字符串操作函数,例如:

SET fieldname = CONCAT(LEFT(fieldname, LENGTH(fieldname)-1),"_",RIGHT(fieldname,1))

答案 2 :(得分:0)

您可以使用SUBSTRING和LENGTH函数:

UPDATE test
   SET name = SUBSTRING(name, 0, LENGTH(name) - 1) + '_' + SUBSTRING(name, -1)