利用SQL進行身份證號碼校驗
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
在實際項目中,我們有時可能需要對人員的身份證號碼的真實性進行測試,為此我們需要掌握身份證號碼的校驗原理以及測試的方法。 身份證校驗原理: 身份證號碼中的校驗碼是身份證號碼的最后一位,是根據GB 11643-1999中有關公民身份號碼的規定,根據精密的計算公式計算出來的,公民身份號碼是特征組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼,最后一位是數字校驗碼。 (1)身份證號碼的組成:AAAAAA-YYYYMMDD-CCC-X 6位數字地址碼 + 8位數字出生日期碼 + 3位數字順序碼 + 1位數字校驗碼 (2)身份證第 1-17 位分別乘以對應的權重因子: (3)將乘積之和取模 11(即除以 11 取余數),然后根據下表得到對應的第 18 位校驗碼 其中 X 其實代表的是 10;身份證號碼第 17 位代表性別,奇數為男性,偶數為女性。 測試案例: 這里我們以2022年06月09日公安部發布A級通緝令公開通緝12名電信網絡詐騙集團重大頭目和骨干人員的三名人員為例,來測試身份證的校驗值。 具體測試SQL語句如下: WITH xx AS( SELECT idcard,( SUBSTRING(idcard,1,1)*7 + SUBSTRING(idcard,2,1)*9 + SUBSTRING(idcard,3,1)*10 + SUBSTRING(idcard,4,1)*5 + SUBSTRING(idcard,5,1)*8 + SUBSTRING(idcard,6,1)*4 + SUBSTRING(idcard,7,1)*2 + SUBSTRING(idcard,8,1)*1 + SUBSTRING(idcard,9,1)*6 + SUBSTRING(idcard,10,1)*3 + SUBSTRING(idcard,11,1)*7 + SUBSTRING(idcard,12,1)*9 + SUBSTRING(idcard,13,1)*10 + SUBSTRING(idcard,14,1)*5 + SUBSTRING(idcard,15,1)*8 + SUBSTRING(idcard,16,1)*4 + SUBSTRING(idcard,17,1)*2) % 11 AS '校驗和模值' FROM tongji) SELECT idcard, RIGHT(idcard,1) AS '身份證校驗值', CASE 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 AS '審計校驗值' FROM xx; 測試結果:
可以看到,身份證校驗值和審計校驗值是一致的。 該文章在 2024/3/18 18:49:59 編輯過 |
關鍵字查詢
相關文章
正在查詢... |