最近处理国标省市区。国家标准如下,截止2016年7月31日:
注意省市区编号,前两位表示省,中间两位表示市。
首先建立表:
DROP TABLE IF EXISTS `area_t_copy`;CREATE TABLE `area_t_copy` ( `code` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `level` tinyint(255) DEFAULT NULL, `parent` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后把数据复制粘贴进去,会粘贴到code字段里。
去除空格等特殊字符:
UPDATE area_t_copy SET `code` = trim( replace( `code`, '\n\r', ''))update area_t_copy set code= replace(code ,'\n\r','');update area_t_copy set code= replace(code ,'\n','');update area_t_copy set code= replace(code ,'\r','');update area_t_copy set code= replace(code ,' ','');update area_t_copy set code= replace(code ,' ','');
设置code、name。
update area_t_copy set `name`= substring(`code`,7);update area_t_copy set code= LEFT(`code`,6);
查询省:
SELECT * FROM area_t_copy WHERE right(`code`,4)='0000';
查询市:
SELECT * FROM area_t_copy WHERE right(`code`,2)='00' AND right(`code`,4) !='0000';
更新省市的级别:
UPDATE area_t_copy SET level = 1 WHERE right(`code`,4)='0000';UPDATE area_t_copy SET level = 2 WHERE right(`code`,2)='00' AND right(`code`,4) !='0000';UPDATE area_t_copy SET level = 3 WHERE level IS NULL;
更新parent 。
UPDATE area_t_copy SET parent = CONCAT(left(code,2),'0000') WHERE `level`=2;UPDATE area_t_copy SET parent = CONCAT(left(code,4),'00') WHERE `level`=3;
处理后最终结果如下:
最终我导出了一个文件,文件地址:
删除“市辖区”。
DELETE FROM area_t_copy WHERE `level`=3 AND `name`='市辖区';//剩下4个直辖市的市辖区。手动更改。UPDATE area_t_copy SET parent = '110000' WHERE parent='110100' ;UPDATE area_t_copy SET parent = '120000' WHERE parent='120100' ;UPDATE area_t_copy SET parent = '310000' WHERE parent='310100' ;UPDATE area_t_copy SET parent = '500000' WHERE parent='500100' ;DELETE FROM area_t_copy WHERE `name`='市辖区'