身份證校驗碼的計算方法
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);
您可能感興趣的文章:- 通過SQLSERVER重啟SQLSERVER服務和計算機的方法
- 利用php+mysql來做一個功能強大的在線計算器
- 在php和MySql中計算時間差的方法
- mysql 字符串長度計算實現代碼(gb2312+utf8)
- SQL2005CLR函數擴展-深入環比計算的詳解
- SQLSERVER 根據地圖經緯度計算距離差示例
- SQL計算字符串中最大的遞增子序列的方法
- SQL語句計算兩個日期之間有多少個工作日的方法
- 如何計算多個訂單的核銷金額