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