您的位置:首页 > 数据库 > MySQL

处理国标省市区

2017-12-07 00:00 120 查看
最近处理国标省市区。国家标准如下,截止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`='市辖区'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 省市