这可能是一个相当独特的使用案例,但我有一个大的(60,000条记录)表,我需要做一些春季大扫除。
我需要做的主要是规范化项目的命名约定。有些是 The Matrix ,有些是 Matrix,。有些甚至是 Matrix,The(15)。
我知道如何删除字符串“,The” - 但我想要做的是将单词移到开头并删除逗号和空格。我手动完成了几百次,但这很乏味。
有什么想法吗?我有一个备份!
答案 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;