将字符从字段末尾“移动”到开头

时间:2015-09-18 17:02:04

标签: mysql

这可能是一个相当独特的使用案例,但我有一个大的(60,000条记录)表,我需要做一些春季大扫除。

我需要做的主要是规范化项目的命名约定。有些是 The Matrix ,有些是 Matrix,。有些甚至是 Matrix,The(15)

我知道如何删除字符串“,The” - 但我想要做的是将单词移到开头并删除逗号和空格。我手动完成了几百次,但这很乏味。

有什么想法吗?我有一个备份!

1 个答案:

答案 0 :(得分:1)

你的意思是你在一列中有一个值“Matrix,The”,在一堆记录上,并想将它们改为“The Matrix”?如果是这样,为什么不做呢

update mytable set title = "The Matrix" where title = "Matrix, The";

或更一般,对于“,The”出现在最后的任何标题

update mytable set title = CONCAT("The ", LEFT(title, LENGTH(title) - 5)) where right(title, 5) = ", The";

或者甚至更一般,对于任何带有逗号的标题

update mytable set title = CONCAT(RIGHT(title, LENGTH(title)-LOCATE(", ", title) - 1), " ", LEFT(title, LOCATE(", ", title) - 1)) where LOCATE(", ", title) > 0;

我会先将最后一个作为选择运行,只是为了直观地确认更改:

select title, CONCAT(RIGHT(title, LENGTH(title)-LOCATE(", ", title) - 1), LEFT(title, LOCATE(", ", title) - 1)) from mytable where LOCATE(", ", title) > 0;