1、身份证号码是不会改变的,即使行政区划变动或发证机关变动,原身份证号码是不会变动(15位变18位除外)。
2、15位号码转18位比较容易,通常只要在原第6位之后加“19”,在最后加校验码。因为1901年之前出生的老人在世的极少了,2000年之后出生的人申领的号码都是18位。
3、行政区划代码校验是比较困难的,因为我们很难同步跟踪全国的行政区划变动情况,除非你能与相关的系统联网直接获取信息,将新区划的代码添加到你的数据库中。
身份证15位转18位可用下面的代码,变通一下也可以作为检查号码是否符合规则要求。
PARAMETERS cSFZ15
cSFZ15 = ALLTRIM(cSFZ15)
IF LEN(cSFZ15)<>15 AND LENC(cSFZ15)<>15
RETURN "不是15位身位证号码!"
ENDIF
IF NOT CHRTRAN(cSFZ15,"1234567890","")==""
RETURN "含有非数字,不是身位证号码!"
ENDIF
cSFZ17 = STUFF(cSFZ15,7,0,'19')
cBy17='7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2'
cCheck='10X98765432'
nCheck=0
FOR nCnt=1 TO 17
nCheck=nCheck+VAL(SUBSTR(cSFZ17,nCnt,1))*VAL(GETWORDNUM(cBy17,nCnt,','))
NEXT
RETURN cSFZ17+SUBSTR(cCheck,nCheck%11+1,1)
ENDIF