在mysql中的特定位置更新替换字符的多行

在mysql中的特定位置更新替换字符的多行,mysql,sql,design-patterns,field,Mysql,Sql,Design Patterns,Field,假设您有一个列,其中包含一组字段,如下所示: ab abc abcd ... a_b ab_c abc_d ... 我想使用单个查询将这些字段转换为如下内容: 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'; upd

假设您有一个列,其中包含一组字段,如下所示:

ab
abc
abcd
...
a_b
ab_c
abc_d
...
我想使用单个查询将这些字段转换为如下内容:

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';

但是由于要更新的字段数量很多,我想一定有更好的方法来实现这一点。

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

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

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

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

您可以使用子字符串和函数:

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

您可以使用子字符串和函数:

UPDATE test
   SET name = SUBSTRING(name, 0, LENGTH(name) - 1) + '_' + SUBSTRING(name, -1)
请尝试此查询-

UPDATE test SET name = INSERT(name, LENGTH(name), 0, '_');
请尝试此查询-

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