在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, '_');