如何将拆分后的字段值批量更新到数据表的对应列中?
批量拆分location列并更新对应字段的MySQL语句
直接执行以下全量更新语句即可完成2万条数据的批量更新:
UPDATE tbl_name SET province = SUBSTRING_INDEX(location, '>', 1), city = SUBSTRING_INDEX(SUBSTRING_INDEX(location, '>', 2), '>', -1), zipcode = SUBSTRING_INDEX(location, '>', -1);
语句说明
province:通过SUBSTRING_INDEX(location, '>', 1)截取location中第一个>之前的内容,即省份信息city:先通过SUBSTRING_INDEX(location, '>', 2)截取前两个分隔符内的内容(Province>City),再用SUBSTRING_INDEX(..., '>', -1)取其中>之后的部分,得到城市信息zipcode:通过SUBSTRING_INDEX(location, '>', -1)截取最后一个>之后的内容,即邮编信息
验证建议
执行更新前,建议先通过SELECT语句验证拆分结果是否符合预期:
SELECT location, SUBSTRING_INDEX(location, '>', 1) AS province, SUBSTRING_INDEX(SUBSTRING_INDEX(location, '>', 2), '>', -1) AS city, SUBSTRING_INDEX(location, '>', -1) AS zipcode FROM tbl_name;
2万条数据量属于较小规模,直接执行全表UPDATE不会有性能问题;如果需要指定更新范围,可在语句末尾添加WHERE条件(比如WHERE ID IS NOT NULL),不过全量更新时WHERE子句可直接省略。
内容的提问来源于stack exchange,提问作者Alexandr Misiyuk
相关产品推荐
相关产品推荐

