一、身份證號碼的組成規則
(1)第1、2位數字表示:所在省份的**;
(2)第3、4位數字表示:所在城市的**;
(3)第5、6位數字表示:所在區縣的**;
(4)第7、8、9、10位代表出生年;
(5)第11位、12位表示:出生月;
(6)第13位、14位表示:出生日;
(7)第15、16位表示:同年同月同日同地區出生的順序;
(8)第17位表示性別:奇數表示男性,偶數表示女性;
(9)第18位數字是校檢碼:0-9 x;
二、使用hql進行身份證號碼的校驗
select * from
(select trim(upper(id)) idcard from id_info) t1
where
-- 1. 身份證號碼位數不正確
length(idcard) <> 18
-- 2. 省份**不正確
or substr(idcard,1,2) not in ('11','12','13','14','15','21','22','23','31','32','33','34','35','36','37','41','42',
'43','44','45','46','50','51','52','53','54','61','62','63','64','65','71','81','82','91')
-- 3. 身份證號碼的正規表示式判斷,注意hql中if的寫法是if(expression, t result1, t result2)
or (
-- 如果為閏年,則執行4中的正規表示式,如果為平年則執行5中的正規表示式
if(pmod(cast(substr(idcard, 7, 4) as int),400) = 0 or (pmod(cast(substr(idcard, 7, 4) as int),100) <> 0
and pmod(cast(substr(idcard, 7, 4) as int),4) = 0),
-- 4. 閏年
if(idcard regexp '^[1-9][0-9]19[0-9]((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|' ||
'[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9][0-9x]$',1,0),
-- 5. 平年
if(idcard regexp '^[1-9][0-9]19[0-9]((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|' ||
'[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9][0-9x]$',1,0)
)) = 0
-- 6. 校驗位不正確
orsubstr('10x98765432',
pmod((cast(substr(idcard,1,1) as int)*7+
cast(substr(idcard,2,1) as int)*9+
cast(substr(idcard,3,1) as int)*10+
cast(substr(idcard,4,1) as int)*5+
cast(substr(idcard,5,1) as int)*8+
cast(substr(idcard,6,1) as int)*4+
cast(substr(idcard,7,1) as int)*2+
cast(substr(idcard, 8,1) as int)*1+
cast(substr(idcard, 9,1) as int)*6+
cast(substr(idcard,10,1) as int)*3+
cast(substr(idcard,11,1) as int)*7+
cast(substr(idcard,12,1) as int)*9+
cast(substr(idcard,13,1) as int)*10+
cast(substr(idcard,14,1) as int)*5+
cast(substr(idcard,15,1) as int)*8+
cast(substr(idcard,16,1) as int)*4+
cast(substr(idcard,17,1) as int)*2
),11)+1,1) <> substr(idcard,18,1);
身份證號碼驗證
說明 驗證身份證的有效性 引數 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...
驗證身份證號碼
好久沒更新了,今天簽到啦。感覺這個驗證挺重要的,也挺常用的,所以分享給需要的朋友。驗證身份證號碼,在網上找到的好東東 function checkidcard idcard var idcard,y,jym var s,m var idcard array new array idcard arra...
驗證身份證號碼
var idcardnoutil powers 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 paritybit 1 0 x 9 8 7 6 5 4 3 2 genders checkaddresscode function addresscode test address...