最近处理国标省市区。国家标准如下,截止2016年7月31日:
http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html
注意省市区编号,前两位表示省,中间两位表示市。
首先建立表:
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;
处理后最终结果如下:
最终我导出了一个文件,文件地址:https://gitee.com/wkcom/notes/blob/master/area_t_copy.sql
删除“市辖区”。
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`='市辖区'