oracle 函数15位身份证号转18位身份证号,同时可以参考此代码编写身份证校验函数
/*15位身份证转18位*/ FUNCTION GET_NEWCERT( OLDCERT IN VARCHAR2) RETURN VARCHAR2 IS NEW_CERT VARCHAR2(20); OLD_CERT VARCHAR2(17); I NUMBER; SUMID NUMBER; CHECKID VARCHAR2(34); ENDID VARCHAR2(11); BEGIN ENDID :='10X98765432'; CHECKID :='0709100508040201060307091005080402'; SUMID :=0; OLD_CERT :=SUBSTR(OLDCERT,1,6)||'19'||SUBSTR(OLDCERT,7,9); IF LENGTH(OLDCERT)=15 AND FHTS_DATE.IS_DATE(SUBSTR(OLD_CERT,7,8))=0 THEN FOR I IN 1..17 LOOP SUMID:=SUMID+TO_NUMBER(SUBSTR(OLD_CERT,I,1))*TO_NUMBER(SUBSTR(CHECKID,I*2-1,2)); END LOOP; NEW_CERT:= OLD_CERT||SUBSTR(ENDID,MOD(SUMID,11)+1,1); ELSE NEW_CERT:=OLDCERT; END IF; RETURN NEW_CERT; END GET_NEWCERT;
|
阅读(2041) | 评论(0) | 转发(0) |