根据身份证号码判定原籍地的方法

1.获取省市区的字典.

从公开信息获取信息,以上面的数据为参考,见参考资料【1】

2.获取身份证列表(自己想办法)

3.字典使用excel的拆分单元格方式,拆成两行

根据身份证号码判定原籍地的方法_第1张图片

 

 

根据身份证号码判定原籍地的方法_第2张图片

 

 

根据身份证号码判定原籍地的方法_第3张图片

 

 

根据身份证号码判定原籍地的方法_第4张图片

 

 

4.取两行数据放入到notepad++或者其他工具,保存为.csv或者.txt格式

 

根据身份证号码判定原籍地的方法_第5张图片

 

导入到mysql或者其他数据库

 

根据身份证号码判定原籍地的方法_第6张图片

 

形成字典表

select SUBSTR(code FROM 1 FOR 2) as provinceCode,address as provinceName from address where code like '%0000';
根据身份证号码判定原籍地的方法_第7张图片

 

形成省份地区关联表

insert INTO MappingCode(id_code,province,city)
select a.code,p.proviceName,CONCAT(p.proviceName,a.address) FROM address a
LEFT JOIN province p on SUBSTR(a.code FROM 1 FOR 2)=p.provinceCode

 

根据身份证号码判定原籍地的方法_第8张图片

 

 

1.查询身份证所属省份

select  pr.proviceName as '省份',ss.cnt as '身份信息的数量' from 
(select t.province as provinceCode,count(t.province) as cnt from (select SUBSTR(idno FROM 1 FOR 2) as province from info ) t GROUP BY t.province
order by count(t.province) desc limit 1000) ss
LEFT JOIN province pr ON pr.provinceCode=ss.provinceCode
where pr.proviceName is not null
ORDER BY ss.cnt desc;

 

根据身份证号码判定原籍地的方法_第9张图片

 

2.查询身份证所属地区

select  mc.city as '地区',ss.cnt as '身份信息的数量' from 
(select t.area as areaCode,count(t.area) as cnt from (select SUBSTR(idno FROM 1 FOR 6) as area from info ) t GROUP BY t.area
order by count(t.area) desc limit 1000) ss
LEFT JOIN MappingCode mc ON id_code=ss.areaCode
where mc.city is not null
ORDER BY ss.cnt desc;

 

根据身份证号码判定原籍地的方法_第10张图片

参考资料

【1】https://www.cnblogs.com/wormday/articles/278709.html

你可能感兴趣的:(根据身份证号码判定原籍地的方法)