从数据库中删除模式

时间:2011-09-27 13:52:57

标签: mysql

我有一个超过300万行的MySQL表,其中包含人名和他们来自的状态,例如“史密斯(SC)”我想删除州信息并拥有“史密斯”。由于使用的姓氏和状态有很多差异,我想知道是否有任何技巧可以使这更容易,只需删除括号和包含在其中的文本。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用选择进行测试以确保您获得了良好的效果:

SELECT LastName, LEFT(LastName, LOCATE('(', LastName) - 1) AS CorrectedLastName
    FROM YourTable
    WHERE LOCATE('(', LastName) <> 0

一旦你对结果充满信心:

UPDATE YourTable
    SET LastName = LEFT(LastName, LOCATE('(', LastName) - 1)
    WHERE LOCATE('(', LastName) <> 0

答案 1 :(得分:1)

先备份,然后尝试

Update <tablename>
 set name =substr(name,1, instr(name,'('));

substr用于oracle但是检查mysql等价物