当前位置: 移动技术网 > IT编程>数据库>MSSQL > 用sql实现18位身份证校验代码分享 身份证校验位计算

用sql实现18位身份证校验代码分享 身份证校验位计算

2017年12月12日  | 移动技术网IT编程  | 我要评论

老人买保健品跳海自尽,高要白土门,临漳新闻网

身份证校验码的计算方法

1、将前面的身份证号码17位数分别乘以不同的系数。第i位对应的数为[2^(18-i)]mod11。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;

2、将这17位数字和系数相乘的结果相加;

3、用加出来和除以11,看余数是多少?;

4、余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 x 9 8 7 6 5 4 3 2;

复制代码 代码如下:

with t as(select '34052419800101001x'id from dual)
select id
from t
where exists(select 1
from dual connect by level<=length(id)-1 --17
having mod(sum(substr(id,level,1)*power(2,18-level)),11)=
case substr(id,-1,1)
when '1' then 0
when '0' then 1
when 'x' then 2
else
12-substr(id,-1,1)
end);

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网