处理国标省市区

最近处理国标省市区。国家标准如下,截止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;

处理后最终结果如下:
163025_MExa_2601303.png

最终我导出了一个文件,文件地址: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`='市辖区'

 

 

转载于:https://my.oschina.net/kunBlog/blog/1586432

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值