如何使用SQL判斷身份證號碼第18位是否符合規則

2021-10-20 21:41:18 字數 1564 閱讀 2546

身份證號碼第18位符合如下演算法:用前十七位號碼,依次加權乘以7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2,再將得出的加權總和除以11,得出的餘數, 從0到10十一種,依次對應尾號:1、0、x、9、8、7、6、5、4、3、2

指令碼如下:其中 identifynumber為身份證號

mod (

( substr(a.identifynumber, 1, 1) * 7 + substr(a.identifynumber, 2, 1) * 9 + substr(a.identifynumber, 3, 1) * 10 + substr(a.identifynumber, 4, 1) * 5 + substr(a.identifynumber, 5, 1) * 8 + substr(a.identifynumber, 6, 1) * 4 + substr(a.identifynumber, 7, 1) * 2 + substr(a.identifynumber, 8, 1) * 1 + substr(a.identifynumber, 9, 1) * 6 + substr(a.identifynumber, 10, 1) * 3 + substr(a.identifynumber, 11, 1) * 7 + substr(a.identifynumber, 12, 1) * 9 + substr(a.identifynumber, 13, 1) * 10 + substr(a.identifynumber, 14, 1) * 5 + substr(a.identifynumber, 15, 1) * 8 + substr(a.identifynumber, 16, 1) * 4 + substr(a.identifynumber, 17, 1) * 2

), 11) <> (

case

when substr(a.identifynumber, 18, 1) = '1' then

'0'when substr(a.identifynumber, 18, 1) = '0' then

'1'when substr(a.identifynumber, 18, 1) in ('x', 'x') then

'2'when substr(a.identifynumber, 18, 1) = '9' then

'3'when substr(a.identifynumber, 18, 1) = '8' then

'4'when substr(a.identifynumber, 18, 1) = '7' then

'5'when substr(a.identifynumber, 18, 1) = '6' then

'6'when substr(a.identifynumber, 18, 1) = '5' then

'7'when substr(a.identifynumber, 18, 1) = '4' then

'8'when substr(a.identifynumber, 18, 1) = '3' then

'9'when substr(a.identifynumber, 18, 1) = '2' then

'10'

end)

身份證號碼

每乙個人自出生後都會有乙個身份證號碼。根據我國有關部門規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為 六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。居民身份證是國家法定的證明公民個人身份的有效證件。例如 對於身份證號碼330719...

身份證號碼驗證

說明 驗證身份證的有效性 引數 cid 身份證號碼 返回 地方 出生時間 性別 private string checkcidinfo string cid if cid.length 18 char c cid cid.length 1 bool last false if c 0 c 9 c a...

身份證號碼檢測

華為的上機題 我國公民的身份證號碼特點如下 1 長度為18位 2 第1 17位只能為數字 3 第18位可以是數字或者小寫英文本母x。4 身份證號碼的第7 14位表示持有人生日的年 月 日資訊。例如 511002 19880808 0111或511002 19880808011x。請實現身份證號碼合法...