用SQL实现18位ID校验码共享身份证的计算

身份证识别码的计算方法

1,乘以17位的身份证号码不同系数。比特数我是{ 2 ^(18-i)} mod11.the系数从第一到第十七79105842163 79105842,分别。

2。添加17个数和系数的结果。

三.加11除以余数,余数是多少;

4,余数只能在11个数字中有0123456789个。最后一张对应的身份证的数目是10×98765432。10。

复制代码代码如下所示:
与T(选择'34052419800101001x'id双)
选择ID
从T
存在(选择1)
从双连接按级别< =长度(id)- 1 - 17
有MOD(总和(substr(ID,等级,1)*功率(2,18-level)),11)=
案例substr(ID,-1,1)
当'1'then 0
当'0'then 1
when'x'then 2
其他的
12 substr(ID,-1,1)
结束);