database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 37835 게시물 읽기
No. 37835
주민번호 확인시 에러 처리
작성자
임경모(xd6197)
작성일
2010-08-06 17:25
조회수
3,720

SELECT a.COMPANY, a.RESNO,
       (MOD(11 - MOD(CAST(SUBSTR(a.RESNO,01,1) AS INTEGER)*2
                    +CAST(SUBSTR(a.RESNO,02,1) AS INTEGER)*3
                    +CAST(SUBSTR(a.RESNO,03,1) AS INTEGER)*4
                    +CAST(SUBSTR(a.RESNO,04,1) AS INTEGER)*5
                    +CAST(SUBSTR(a.RESNO,05,1) AS INTEGER)*6
                    +CAST(SUBSTR(a.RESNO,06,1) AS INTEGER)*7
                    +CAST(SUBSTR(a.RESNO,07,1) AS INTEGER)*8
                    +CAST(SUBSTR(a.RESNO,08,1) AS INTEGER)*9
                    +CAST(SUBSTR(a.RESNO,09,1) AS INTEGER)*2
                    +CAST(SUBSTR(a.RESNO,10,1) AS INTEGER)*3
                    +CAST(SUBSTR(a.RESNO,11,1) AS INTEGER)*4
                    +CAST(SUBSTR(a.RESNO,12,1) AS INTEGER)*5),11),10) as CHECK_DIGIT
  FROM ( SELECT COMPANY, RESNO
           FROM AAA
          WHERE LENGTH(LTRIM(RTRIM(RESNO))) = 13
            AND SUBSTR(RESNO,01,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,02,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,03,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,04,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,05,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,06,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,07,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,08,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,09,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,10,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,11,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,12,1) BETWEEN '0' AND '9'
            AND SUBSTR(RESNO,13,1) BETWEEN '0' AND '9'
       ) a
 WHERE ((CAST(SUBSTR(a.RESNO,03,2) AS INTEGER) >= 1 AND CAST(SUBSTR(a.RESNO,03,2) AS INTEGER) <= 12) AND
        (CAST(SUBSTR(a.RESNO,05,2) AS INTEGER) >= 1 AND CAST(SUBSTR(a.RESNO,05,2) AS INTEGER) <= 31)  )
   AND (MOD(11-MOD(CAST(SUBSTR(a.RESNO,01,1) AS INTEGER)*2
                  +CAST(SUBSTR(a.RESNO,02,1) AS INTEGER)*3
                  +CAST(SUBSTR(a.RESNO,03,1) AS INTEGER)*4
                  +CAST(SUBSTR(a.RESNO,04,1) AS INTEGER)*5
                  +CAST(SUBSTR(a.RESNO,05,1) AS INTEGER)*6
                  +CAST(SUBSTR(a.RESNO,06,1) AS INTEGER)*7
                  +CAST(SUBSTR(a.RESNO,07,1) AS INTEGER)*8
                  +CAST(SUBSTR(a.RESNO,08,1) AS INTEGER)*9
                  +CAST(SUBSTR(a.RESNO,09,1) AS INTEGER)*2
                  +CAST(SUBSTR(a.RESNO,10,1) AS INTEGER)*3
                  +CAST(SUBSTR(a.RESNO,11,1) AS INTEGER)*4
                  +CAST(SUBSTR(a.RESNO,12,1) AS INTEGER)*5),11),10) <> CAST(SUBSTR(a.RESNO,13,1) AS INTEGER)
이렇게 하면 ora-000909 인수 개수가 부적합하다고 합니다

어찌하면 좋을까요?? 부탁 합니다

 

 

 

이 글에 대한 댓글이 총 2건 있습니다.

1. Mod 앞에 괄호 빼시고... (MOD ====> MOD

2. *5 뒤에 괄호 빼시고....  *5) ====> *5

마농(manon94)님이 2010-08-06 17:41에 작성한 댓글입니다.

예전에 해놓은건데... 제대로 돌아갈런지는 모르겠네요.

환경은 오라클 10g 이상에서 사용가능합니다.

SELECT
       DECODE(MOD(11-MOD(SUM(JM * CT),11),10),MAX(CHK_JM),'O','X') CHK_JUMIN
FROM (
SELECT
       RTRIM(REGEXP_SUBSTR(JM,'[^#]*#',1,LEVEL),'#') JM,
       CASE WHEN LEVEL+1 < 10 THEN LEVEL+1 ELSE LEVEL+1-8 END CT,
       RTRIM(REGEXP_SUBSTR(JM,'[^#]*#',1,13),'#') CHK_JM
FROM (
        SELECT
               REGEXP_REPLACE(:JUBUN,'(.)','\1#') JM,
               LENGTH(:JUBUN) LEN
        FROM DUAL
     )
CONNECT BY LEVEL < LEN
)

봄날님이 2010-08-08 02:52에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
37839TimeStamp 의 group by.. [1]
이영찬
2010-08-09
3764
37837oracle 학사 DB 연동 [1]
김경원
2010-08-09
2983
37836전에 nc소프트 면접볼때요 db 연결 방식에 대해 묻던데요. [1]
이근호
2010-08-09
3191
37835주민번호 확인시 에러 처리 [2]
임경모
2010-08-06
3720
37834계층구조 만들기...도움요청해요. [2]
배움이
2010-08-05
3382
37833LOCK에 대해 질문드립니다. [2]
2010-08-04
3377
37832쿼리 조언 부탁 드립니다. [1]
사베
2010-08-04
3026
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다