주민등록번호 체크방법(자바스크립트, plsql)

주민번호를 총 13자리 배열이라고 할 때

0~11까지의 인덱스에 각각 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5를 곱한다.

인덱스별로 곱한 결과를 모두 더하고, 그 값을 11로 나눈 후 나머지를 구한다.

나머지에서 11을 뺀 수가 13번째 숫자값이 된다. (나머지가 10 이상이면 1의 자리만 비교)

 

자바스크립트로 주민번호 체크

 

function checkIt(jumin){
var juminArray =  null;
juminArray = stringToIntArray(jumin);
alert( checkJM(juminArray) );
}

function checkJM(juminArray) {
var _CHECKDIGIT = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5];
var _BASEDIGIT = 11;
var sumVal = 0;

for(var i = 0; i < 12; i++) {
sumVal += (juminArray[i] * _CHECKDIGIT[i]);
}

temp = _BASEDIGIT – (sumVal % _BASEDIGIT);
temp = (temp == 10) ? 0 : temp;
temp = (temp == 11) ? 1 : temp;

return (temp == parseInt(juminArray[12])) ? true : false;
}

function stringToIntArray(str) {
var intArray = new Array(str.length);

for(var i = 0; i < intArray.length; i++) {
intArray[i] = parseInt(str.charAt(i));
}

return intArray;
}

오라클 plsql로 주민번호 체크

/* FUNCTION F_JUMIN_CHECK(JUMIN VARCHAR2)  */
/* return : Right = ‘Y’, False = ‘N’                       */

CREATE OR REPLACE FUNCTION F_JUMIN_CHECK(JUMIN VARCHAR2) RETURN CHAR
AS
TYPE TJ_ARRAY IS TABLE OF NUMBER(2) INDEX BY BINARY_INTEGER;
TYPE TCK_ARRAY IS TABLE OF NUMBER(2) INDEX BY BINARY_INTEGER;

R_VALUE CHAR(1);
T_SUM NUMBER(3) := 0;
V_TEMP NUMBER(3);

TJ TJ_ARRAY;
TCK TCK_ARRAY;

BEGIN

TCK(1) := 2;
TCK(2) := 3;
TCK(3) := 4;
TCK(4) := 5;
TCK(5) := 6;
TCK(6) := 7;
TCK(7) := 8;
TCK(8) := 9;
TCK(9) := 2;
TCK(10) := 3;
TCK(11) := 4;
TCK(12) := 5;

FOR X IN 1..13 LOOP
TJ(X) := TO_NUMBER(SUBSTR(JUMIN, X, 1));
END LOOP;

 

FOR X IN 1..12 LOOP
T_SUM := T_SUM + (TCK(X) * TJ(X));
END LOOP;

V_TEMP := 11 – MOD(T_SUM, 11);

IF V_TEMP = 10 THEN
V_TEMP := 0;
ELSIF V_TEMP = 11 THEN
V_TEMP := 1;
END IF;

IF V_TEMP = TO_NUMBER(TJ(13)) THEN
R_VALUE := ‘Y’;
ELSE
R_VALUE := ‘N’;
END IF;

RETURN R_VALUE;
END;
/

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.