身份證校驗碼的計算方法

germany006發表於2014-01-27
轉載地址:http://www.itpub.net/thread-1568841-1-1.html

身份證校驗碼的計算方法
  

     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);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-1075980/,如需轉載,請註明出處,否則將追究法律責任。

相關文章