公民身份证号码GB/T11643-1998
详 细 内 容
【标准号】GB 11643-1999
【中文标题】公民身份号码
【英文标题】Citizen identification number
【中文主题词】社会保险;中国;数字标志;身分号码;公民身分号码
【英文主题词】CITIZEN IDENTIFICATION NUMBER;SOCIAL SECURITY;IDENTIFICATION NUMBER;CHINA;NUMERICAL DESIGNATIONS;NUMBER MARK
【发布日期】1999-01-19
【实施日期】1999-07-01
【标准类型】CJ
【被代替标准】GB 11643-1989
【采用关系】
【中标分类号】A24
【国际分类号】35.040
【发布单位】
【开本页数】6P.;A4
【馆藏标志】*
详 细 内 容
【标准号】GB 11643-1999
【中文标题】公民身份号码
【英文标题】Citizen identification number
【中文主题词】社会保险;中国;数字标志;身分号码;公民身分号码
【英文主题词】CITIZEN IDENTIFICATION NUMBER;SOCIAL SECURITY;IDENTIFICATION NUMBER;CHINA;NUMERICAL DESIGNATIONS;NUMBER MARK
【发布日期】1999-01-19
【实施日期】1999-07-01
【标准类型】CJ
【被代替标准】GB 11643-1989
【采用关系】
【中标分类号】A24
【国际分类号】35.040
【发布单位】
【开本页数】6P.;A4
【馆藏标志】*
解决方案 »
- VB,开发者对开发平台碰到的第一个难题是!
- 要取下拉列表框(combobox)中空格后面的所有字符怎么实现的?
- 最短路径分析
- 选择线的类型,快来拿分!!!再线等待!!!
- 关于数据库查询的一个简单问题vb-access
- [求助]VB与ACCESS数据库的问题
- 求一个可以在预览时修改字段的打印控件
- 在某个text作为日期输入文本框,想让text默认为 . . 这样输入时可以直接输入数字即可.该如何.
- VB如何控制网卡禁用及启用?
- 谁有办法把del健的功能去掉.29分.
- 数据库access的问题
- wm_close对应的消息常数是什么啊?比如说我发给了一个开始菜单,但我想把它恢复过来,可我用create不起作用啊?
110000 北京市
110100 市辖区
110101 东城区
110102 西城区
110103 崇文区
110104 宣武区
110105 朝阳区
110106 丰台区
110107 石景山区
110108 海淀区
110109 门头沟区
110111 房山区
110112 通州区
110113 顺义区
110200 县
110221 昌平县
110224 大兴县
110226 平谷县
110227 怀柔县
110228 密云县
110229 延庆县
120000 天津市
120100 市辖区
120101 和平区
i----表示号码字符从由至左包括校验码在内的位置序号;
ai----表示第i位置上的号码字符值;
Wi----示第i位置上的加权因子,其数值依据公式Wi=2(n-1)(mod 11)计算得出。 i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 ai×Wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1 根据公式(1)进行计算: ∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189 189 ÷ 11 = 17 + 2/11 ∑(ai×Wi)(mod 11) = 2 然后根据计算的结果,从下面的表中查出相应的校验码,其中X表示计算结果为10: ∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10
校验码字符值ai 1 0 X 9 8 7 6 5 4 3 2
根据上表,查出计算结果为2的校验码为所以该人员的公民身份号码应该为 34052419800101001X。 a[0]*7+a[1]*9+a[2]*10+a[3]*5+a[4]*8+a[5]*4+a[6]*2+a[7]*1+a[8]*6+a[9]*3
+a[10]*7+a[11]*9+a[12]*10+a[13]*5+a[14]*8+a[15]*4+a[16]*2
%11when 0 then '1' when 1 then '0' when 2 then 'X' when 3 then '9'
when 4 then '8' when 5 then '7' when 6 then '6' when 7 then '5'
when 8 then '4' when 9 then '3' when 10 then '2'*/
alter function getCheckCode(@SFZH varchar(18))
Returns char(1)
As
Begin
declare @r char(1)
declare @i int
if len(@SFZH) <> 18
set @r = '?'
else
set @i = cast(substring(@SFZH,1,1) as int) * 7
+cast(substring(@SFZH,2,1) as int) * 9
+cast(substring(@SFZH,3,1) as int) * 10
+cast(substring(@SFZH,4,1) as int) * 5
+cast(substring(@SFZH,5,1) as int) * 8
+cast(substring(@SFZH,6,1) as int) * 4
+cast(substring(@SFZH,7,1) as int) * 2
+cast(substring(@SFZH,8,1) as int) * 1
+cast(substring(@SFZH,9,1) as int) * 6
+cast(substring(@SFZH,10,1) as int) * 3
+cast(substring(@SFZH,11,1) as int) * 7
+cast(substring(@SFZH,12,1) as int) * 9
+cast(substring(@SFZH,13,1) as int) * 10
+cast(substring(@SFZH,14,1) as int) * 5
+cast(substring(@SFZH,15,1) as int) * 8
+cast(substring(@SFZH,16,1) as int) * 4
+cast(substring(@SFZH,17,1) as int) * 2
set @i = @i - @i/11 * 11
set @r = (case @i
when 0 then '1' when 1 then '0' when 2 then 'X' when 3 then '9'
when 4 then '8' when 5 then '7' when 6 then '6' when 7 then '5'
when 8 then '4' when 9 then '3' when 10 then '2' else '/' end)
Return(@r)
End/* Usage:
Select rym_gh,rym_xm,rym_rcrq,rym_csrq,convert(char(8),rym_csrq,112),rym_bh,dep_mc,rym_sfzh,dbo.getCheckCode(rym_sfzh) from rym_mstr
join dep_mstr on rym_bh = dep_bh
where len(rym_sfzh) = 18
and rym_zt = '0001'
and right(rym_sfzh,1) <> dbo.getCheckCode(rym_sfzh)
--and convert(char(8),rym_csrq,112) <> substring(rym_sfzh,7,8)
order by rym_bh
*/