我有一个超过300万行的MySQL表,其中包含人名和他们来自的状态,例如“史密斯(SC)”我想删除州信息并拥有“史密斯”。由于使用的姓氏和状态有很多差异,我想知道是否有任何技巧可以使这更容易,只需删除括号和包含在其中的文本。
任何建议都将不胜感激。
答案 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等价物