공개하는 주소
공개하는 주소정보로써, 도형정보 또는 좌표를 제외한 자료로 구성되어 있습니다.
('행정안전부 공간정보 보안관리규정'에 따른 비공개 또는 공개제한 사항 제외)
사용중인 휴대전화번호로 인증
본인 명의 아이핀 계정으로 인증
공개하는 주소정보로써, 도형정보 또는 좌표를 제외한 자료로 구성되어 있습니다.
('행정안전부 공간정보 보안관리규정'에 따른 비공개 또는 공개제한 사항 제외)
도로명주소한글DB는 도로명주소 기준의 DB입니다.
약 600만여 건의 도로명주소로 구성으로,
여러 개의 건물이 하나의 도로명주소를 갖는 집합건물(예: 아파트)의 경우 한 건의 주소정보를 제공합니다.
* 최근 2년 이내 자료를 제공합니다.
도로명주소영문 DB는 여러 개의 건물이 하나의 도로명주소를 갖는 집합 건물(예: 아파트)의 경우
한 건의 주소정보를 영문으로 제공하도록 구성된 도로명주소기준의 DB입니다.
* 최근 2년 이내 자료를 제공합니다.
상세주소란 도로명주소의 건물번호 뒤에 표시되는 동·층·호 정보로, 2가구 이상 거주하는 원룸·다가구·단독주택에 부여합니다.
* 최근 2년 이내 자료를 제공합니다.
건물 동단위로 부여된 도로명주소를 제공합니다.
(층·호 제외/건물단위제공)
* 최근 2년 이내 자료를 제공합니다.
도로명과 기초번호를 이용하여 구성한 사물주소 정보를 제공합니다.
* 최근 2년 이내 자료를 제공합니다.
도로명주소의 부여되는 도로명/시군구명/법정동(읍면동)명 부여일자 등을 제공합니다.
* 최근 2년 이내 자료를 제공합니다.
도로명주소를 구성하는 기본 단위인 건물정보와 해당 건물이 위치한 토지(지번)정보로 구성된 DB입니다.
하나의 도로명주소가 부여된 단지형 아파트의 경우에도 상세 동별 정보가 모두 제공되므로,
건물 단위의 주소 활용에 용이합니다.
* 최근 2년 이내 자료를 제공합니다.
주소DB는 여러 개의 건물이 하나의 도로명주소를 갖는 집합 건물(예: 아파트)의 경우
한 건의 주소정보를 제공하도록 구성된 주소 단위의 DB입니다.
600만여 건의 주소와 800만여 건의 지번정보를 바탕으로 사용자의 필요에 따라 선택적으로 활용할 수 있도록
도로명코드 / 주소 / 지번 / 부가정보로 분리·구성하였습니다.
* 최근 2년 이내 자료를 제공합니다.
사서함주소DB는 인터넷 우체국(www.epost.kr)에 정기적으로 게시되는 사서함DB를 가공하여 제공합니다.
* 최근 2년 이내 자료를 제공합니다.
주소DB와 관련지번을 결합한 단일 파일로 구성하여 1개월 주기로 제공합니다.
* 최근 2년 이내 자료를 제공합니다.
주소정보와 건물단위로 매칭가능한 상세주소정보를 제공합니다.
상세주소란 도로명주소의 건물번호 뒤에 표시되는 동·층·호 정보로, 2가구 이상 거주하는 원룸·다가구·단독주택에 부여합니다.
* 최근 2년 이내 자료를 제공합니다.
안전 사고 발생 시 신속 대응 지원 및 내비게이션 등에 안내체계 마련을 위해
도로명과 기초번호를 이용하여 구성한 사물주소정보를 제공합니다.
사물주소란, 주소부여가 어려운 곳에 도로명과 기초번호를 이용하여 사물에 부여한 주소를 말합니다.
* 최근 2년 이내 자료를 제공합니다.
도로명주소한글DB는 도로명주소 기준의 DB입니다.
약 600만여 건의 도로명주소로 구성으로,
여러 개의 건물이 하나의 도로명주소를 갖는 집합건물(예: 아파트)의 경우 한 건의 주소정보를 제공합니다.
도로명주소 한글 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
도로명주소관리번호
26
문자
PK1
2
법정동코드
10
문자
3
시도명
40
문자
4
시군구명
40
문자
5
법정읍면동명
40
문자
6
법정리명
40
문자
7
산여부
1
문자
0:대지, 1:산
8
지번본번(번지)
4
숫자
9
지번부번(호)
4
숫자
10
도로명코드
12
문자
PK2
시군구코드(5)+도로명번호(7)
11
도로명
80
문자
12
지하여부
1
문자
PK3
0:지상, 1:지하, 2:공중, 3:수상
13
건물본번
5
숫자
PK4
14
건물부번
5
숫자
PK5
15
행정동코드
60
문자
참고용
16
행정동명
60
문자
참고용
17
기초구역번호(우편번호)
5
문자
18
이전도로명주소
400
문자
19
효력발생일
8
문자
20
공동주택구분
1
문자
21
이동사유코드
2
문자
31:신규, 34:수정, 63:폐지
22
건축물대장건물명
400
문자
23
시군구용건물명
400
문자
24
비고
200
문자
관련지번 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
도로명주소관리번호
26
문자
PK1
2
법정동코드
10
문자
PK2
3
시도명
40
문자
4
시군구명
40
문자
5
법정읍면동명
40
문자
6
법정리명
40
문자
7
산여부
1
문자
PK3
0:대지, 1:산
8
지번본번(번지)
4
숫자
PK4
9
지번부번(호)
4
숫자
PK5
10
도로명코드
12
문자
시군구코드(5)+도로명번호(7)
11
지하여부
1
문자
0:지상, 1:지하, 2:공중, 3:수상
12
건물본번
5
숫자
13
건물부번
5
숫자
14
이동사유코드
2
문자
31:신규, 34:변동, 63:폐지
/*
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
UPDATE 도로명주소_한글 A
SET (A.법정동코드, A.시도명, A.시군구명, ……) =
(SELECT B.법정동코드, B.시도명, B.시군구명, …… FROM 도로명주소_한글_변경분 B
WHERE A.도로명관리번호 = B.도로명관리번호 AND B.이동사유코드 IN ('31', '34') AND ROWNUM = 1)
WHERE EXISTS (SELECT 1 FROM 도로명주소_한글_변경분 C WHERE C.도로명관리번호 = A.도로명관리번호 AND C.이동사유코드 IN ('31', '34'))
INSERT INTO 도로명주소_한글 (도로명관리번호, 법정동코드, 시도명……)
SELECT A.도로명관리번호, A.법정동코드, A.시도명 …… FROM 도로명주소_한글_변경분 A
WHERE A.이동사유코드 IN ('31', '34') AND NOT EXISTS (SELECT 1 FROM 도로명주소_한글 B WHERE B.도로명관리번호 = A.도로명관리번호)
MERGE INTO 도로명주소_한글 A
USING (SELECT 도로명관리번호, 법정동코드, 시도명, ...... FROM 도로명주소_한글_변경분 B WHERE B.이동사유코드 IN ('31', '34')) B
ON (A.도로명관리번호 = B.도로명관리번호 )
WHEN MATCHED THEN
UPDATE SET A.법정동코드 = B.법정동코드, A.시도명 = B.시도명, A.시군구명 = B.시군구명, ……
WHEN NOT MATCHED THEN
INSERT (A. 법정동코드 , A. 시도명 , A.시군구명 , A.읍면동명, ……)
VALUES (B. 법정동코드 , B. 시도명 , B.시군구명 , B.읍면동명, ……)
/* 폐지 건 처리 */
DELETE FROM 도로명주소_한글 A
WHERE EXISTS (SELECT 1 FROM 도로명주소_한글_변경분 B
WHERE A.도로명관리번호 = B.도로명관리번호
AND C.이동사유코드 = '63')
도로명주소영문 DB는 여러 개의 건물이 하나의 도로명주소를 갖는 집합 건물(예: 아파트)의 경우
한 건의 주소정보를 영문으로 제공하도록 구성된 도로명주소기준의 DB입니다.
도로명주소 영문 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
도로명주소관리번호
26
문자
PK1
2
법정동코드
10
문자
3
영문시도명
40
문자
4
영문시군구명
40
문자
5
영문읍면동명
40
문자
6
영문리명
40
문자
7
도로명코드
12
문자
PK2
8
영문도로명
80
문자
9
지하여부
1
문자
PK3
0:지상, 1:지하, 2:공중, 3:수상
10
건물본번
5
숫자
PK4
11
건물부번
5
숫자
PK5
12
기초구역번호(우편번호)
5
문자
13
산여부
1
문자
0:대지, 1:산
14
지번본번(번지)
4
숫자
15
지번부번(호)
4
숫자
16
효력발생일
8
문자
17
이동사유코드
2
문자
31:신규, 34:수정, 63:폐지
/*
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
UPDATE 도로명주소_영문 A
SET (A.법정동코드, A.영문시도명, A.영문시군구명, ……) =
(SELECT B.법정동코드, B.영문시도명, B.영문시군구명, …… FROM 도로명주소_영문_변경분 B
WHERE A.도로명관리번호 = B.도로명관리번호 AND B.이동사유코드 IN ('31', '34') AND ROWNUM = 1)
WHERE EXISTS (SELECT 1 FROM 도로명주소_영문_변경분 C WHERE C.도로명관리번호 = A.도로명관리번호 AND C.이동사유코드 IN ('31', '34'))
INSERT INTO 도로명주소_영문 (도로명관리번호, 법정동코드, 영문시도명……)
SELECT A.도로명관리번호, A.법정동코드, A.영문시도명 …… FROM 도로명주소_영문_변경분 A
WHERE A.이동사유코드 IN ('31', '34') AND NOT EXISTS (SELECT 1 FROM 도로명주소_영문 B WHERE B.도로명관리번호 = A.도로명관리번호)
MERGE INTO 도로명주소_영문 A
USING (SELECT 도로명관리번호, 법정동코드, 영문시도명, ...... FROM 도로명주소_영문_변경분 B WHERE B.이동사유코드 IN ('31', '34')) B
ON (A.도로명관리번호 = B.도로명관리번호 )
WHEN MATCHED THEN
UPDATE SET A.법정동코드 = B.법정동코드, A.영문시도명 = B.영문시도명, A.영문시군구명 = B.영문시군구명, ……
WHEN NOT MATCHED THEN
INSERT (A. 법정동코드 , A. 영문시도명 , A.영문시군구명 , A.영문읍면동명, ……)
VALUES (B. 법정동코드 , B. 영문시도명 , B.영문시군구명 , B.영문읍면동명, ……)
/* 폐지 건 처리 */
DELETE FROM 도로명주소_영문 A
WHERE EXISTS (SELECT 1 FROM 도로명주소_영문_변경분 B
WHERE A.도로명관리번호 = B.도로명관리번호
AND C.이동사유코드 = '63')
상세주소란 도로명주소의 건물번호 뒤에 표시되는 동·층·호 정보로, 2가구 이상 거주하는 원룸·다가구·단독주택에 부여합니다.
상세주소 표시 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
시군구코드
5
문자
PK1
2
동일련번호
숫자
PK2
3
층일련번호
숫자
PK3
PK (없을 경우 0)
4
호일련번호
숫자
PK4
PK (없을 경우 0)
5
호접미사일련번호
숫자
PK5
PK (없을 경우 0)
6
동명칭
50
문자
7
층명칭
50
문자
8
호명칭
50
문자
9
호접미사명칭
10
문자
호 상세구분
(예)101호 A, 101호 B
10
지하구분
1
문자
지하층 구분
0:일반, 1:지하
11
건물관리번호
25
문자
건물 연계Key
12
법정동코드
10
문자
도로명주소 연계Key1
13
도로명코드
12
문자
도로명주소 연계Key2
14
지하여부
1
문자
도로명주소 연계Key3
15
건물본번
5
숫자
도로명주소 연계Key4
16
건물부번
5
숫자
도로명주소 연계Key5
17
도로명주소관리번호
26
문자
도로명관리 연계Key
18
이동사유코드
2
문자
31:신규, 34:수정, 63:폐지
(변동분)상세주소 표시 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
시군구코드
5
문자
PK1
2
동일련번호
10
숫자
PK2
3
층일련번호
10
숫자
PK3
PK (없을 경우 0)
4
호일련번호
10
숫자
PK4
PK (없을 경우 0)
5
호접미사일련번호
10
숫자
PK5
PK (없을 경우 0)
6
동명칭
50
문자
7
층명칭
50
문자
8
호명칭
50
문자
9
호접미사명칭
10
문자
호 상세구분
(예)101호 A, 101호 B
10
지하구분
1
문자
지하층 구분
0:일반, 1:지하
11
건물관리번호
25
문자
건물 연계Key
12
법정동코드
10
문자
도로명주소 연계Key1
13
도로명코드
12
문자
도로명주소 연계Key2
14
지하여부
1
문자
도로명주소 연계Key3
15
건물본번
5
숫자
도로명주소 연계Key4
16
건물부번
5
숫자
도로명주소 연계Key5
17
이동사유
2
문자
31:신규, 34:변동, 63:폐지
18
이동일자
2
문자
31:신규, 34:변동, 63:폐지
/*
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
UPDATE 상세주소 A
SET (A.동명칭, A.층명칭, A.호명칭, ……) =
(SELECT B.동명칭, B.층명칭, B.호명칭, …… FROM 상세주소_변경분 B
WHERE A.시군구코드 = B.시군구코드
AND A.동일련번호 = B.동일련번호
AND A.층일련번호 = B.층일련번호
AND A.호일련번호 = B.호일련번호
AND A.호접미사일련번호 = B.호접미사일련번호
AND B.이동사유코드 IN ('31', '34') AND ROWNUM = 1)
WHERE EXISTS (SELECT 1 FROM 상세주소_변경분 C
WHERE A.시군구코드 = C.시군구코드
AND A.동일련번호 = C.동일련번호
AND A.층일련번호 = C.층일련번호
AND A.호일련번호 = C.호일련번호
AND A.호접미사일련번호 = C.호접미사일련번호
AND C.이동사유코드 IN ('31', '34'))
INSERT INTO 상세주소 (시군구코드, 동일련번호, 층일련번호……)
SELECT A.시군구코드, A.동일련번호, A.층일련번호 ……
FROM 상세주소_변경분 A
WHERE A.이동사유코드 IN ('31', '34')
AND NOT EXISTS (SELECT 1 FROM 상세주소 B
WHERE A.시군구코드 = B.시군구코드
AND A.동일련번호 = B.동일련번호
AND A.층일련번호 = B.층일련번호
AND A.호일련번호 = B.호일련번호
AND A.호접미사일련번호 = B.호접미사일련번호)
MERGE INTO 상세주소 A
USING (SELECT 시군구코드, 동일련번호, 층일련번호, ...... FROM 상세주소_변경분 B WHERE B.이동사유코드 IN ('31', '34')) B
ON (A.시군구코드 = B.시군구코드 AND A.동일련번호 = B.동일련번호 AND A.층일련번호 = B.층일련번호 AND A.호일련번호 = B.호일련번호 AND A.호접미사일련번호 = B.호접미사일련번호 )
WHEN MATCHED THEN
UPDATE SET A.동명칭 = B.동명칭, A.층명칭 = B.층명칭, A.호명칭 = B.호명칭, ……
WHEN NOT MATCHED THEN
INSERT (A.동명칭, A.층명칭, A.호명칭, A.호접미사명칭, ……)
VALUES (B.동명칭, B.층명칭, B.호명칭, B.호접미사명칭, ……)
/* 폐지 건 처리 */
DELETE FROM 상세주소 A
WHERE EXISTS (SELECT 1 FROM 상세주소_변경분 B
WHERE A.시군구코드 = B.시군구코드
AND A.동일련번호 = B.동일련번호
AND A.층일련번호 = B.층일련번호
AND A.호일련번호 = B.호일련번호
AND A.호접미사일련번호 = B.호접미사일련번호
AND C.이동사유코드 = '63')
건물 동단위로 부여된 도로명주소를 제공합니다.
(층·호 제외/건물단위제공)
상세주소 동 표시 레이아웃
순번
한글컬럼명
크기
형식
PK
비고
1
법정동코드
10
문자
2
건축물대장건물명
40
문자
3
상세건물명
100
문자
4
시군구용건물명
40
문자
5
도로명코드
12
문자
6
지하여부
1
문자
7
건물본번
5
숫자
8
건물부번
5
숫자
9
도로명주소관리번호
26
문자
PK1
10
건물관리번호
25
문자
PK2
11
이동사유코드
2
문자
31:신규, 34:변동, 63:폐지
/*
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
UPDATE 상세주소_동 A
SET ( A.시군구코드, A.일련번호, A.동명칭, A.도로명코드, A.지하여부, ……) =
(SELECT B.시군구코드, B.동일련번호, B.동명칭, B.도로명코드, B.지하여부, …… FROM 상세주소_동_변경분 B
WHERE A.도로명관리번호 = B.도로명관리번호
AND A.건물관리번호 = B.건물관리번호
AND B.이동사유코드 IN ('31', '34') AND ROWNUM = 1)
WHERE EXISTS (SELECT 1 FROM 상세주소_동_변경분 C
WHERE A.도로명관리번호 = C.도로명관리번호
AND A.건물관리번호 = C.건물관리번호
AND C.이동사유코드 IN ('31', '34'))
INSERT INTO 상세주소_동 (시군구코드, 동일련번호, 동명칭……)
SELECT A.시군구코드, A.동일련번호, A.동명칭 ……
FROM 상세주소_동_변경분 A
WHERE A.이동사유코드 IN ('31', '34')
AND NOT EXISTS (SELECT 1 FROM 상세주소_동 B
WHERE A.도로명관리번호 = B.도로명관리번호
AND A.건물관리번호 = B.건물관리번호)
MERGE INTO 상세주소_동 A
USING (SELECT 시군구코드, 동일련번호, 동명칭, ...... FROM 상세주소_동_변경분 B WHERE B.이동사유코드 IN ('31', '34')) B
ON (A.도로명관리번호 = B.도로명관리번호 AND A.건물관리번호 = B.건물관리번호)
WHEN MATCHED THEN
UPDATE SET A.동명칭 = B.동명칭, A.도로명코드 = B.도로명코드, A.지하여부 = B.지하여부, ……
WHEN NOT MATCHED THEN
INSERT (A.시군구코드,A.동일련번호,A.동명칭, A.도로명코드, A.지하여부, A.건물본번, ……)
VALUES (B.시군구코드,B.동일련번호,B.동명칭, B.도로명코드, B.지하여부, B.건물본번, ……)
/* 폐지 건 처리 */
DELETE FROM 상세주소_동 A
WHERE EXISTS (SELECT 1 FROM 상세주소_동_변경분 B
WHERE A.도로명관리번호 = B.도로명관리번호
AND A.건물관리번호 = B.건물관리번호
AND C.이동사유코드 = '63')
도로명과 기초번호를 이용하여 구성한 사물주소 정보를 제공합니다.
사물 마스터 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
사물관리번호
18
문자
PK
2
사물명
120
문자
3
사물영문명
60
문자
4
시군구코드
5
문자
5
시도명
40
문자
6
시군구명
40
문자
7
변경일자
8
문자
8
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
* 각 사물별로 사물 마스터 레이아웃이 다릅니다. 자세한 레이아웃은 활용가이드를 참고하세요.
사물 주소 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
사물관리번호
18
문자
PK1
2
사물주소일련번호
18
문자
PK2
3
점공간일련번호
22
숫자
4
시군구코드
5
문자
5
시도명
40
문자
6
시군구명
40
문자
7
읍면동명
40
문자
8
도로명코드
7
문자
9
도로명
80
문자
10
지하여부
1
문자
0:지상, 1:지하, 2:공중, 3:수상
11
주소본번
5
숫자
12
주소부번
4
숫자
13
행정구역코드
10
문자
14
대표주소여부
1
문자
15
변경일자
8
문자
16
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
승강기 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
사물관리번호
22
숫자
PK
2
사물구분코드
4
문자
PK
3
승강기 고유번호
8
문자
PK
4
승강기 호기
5
문자
예시)1, 2
5
승강기 설치장소
60
문자
예시)1-1, 1-2
6
지상 층수
3
숫자
예시) 2
7
지하 층수
160
숫자
예시) 0
8
시군구코드
5
문자
9
육교명
60
문자
승강기가 설치 된 육교명칭
10
승강기 관리주체
80
문자
승강기관리원에서 사용하는 자료
11
승강기 참고주소
160
문자
승강기관리원에서 사용하는 자료
12
변경일자
8
문자
13
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
14
육교일련번호
22
숫자
출입구 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
사물주소일련번호
22
숫자
PK
2
사물관리번호
22
숫자
PK
3
사물구분코드
4
문자
PK
4
층번호
3
숫자
PK
예시) 1, 2, -1, -2,
*지하층은 음수(-)로 표시
5
층별칭
40
문자
예시)1층, 2층, 3층, gf층
6
행정구역코드
10
문자
7
사물주소
254
문자
예시) 서울특별시 강남구 강남대로 708
8
도로명
160
문자
예시) 강남대로
9
도로명코드
7
문자
10
사물주소본번
5
숫자
예시) 708
11
사물주소부번
5
숫자
예시) 0
12
변경일자
8
문자
13
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
육교 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
육교일련번호
22
숫자
PK
2
육교명
60
문자
승강기가 설치 된 육교명칭
3
시군구코드
5
문자
4
변경일자
8
문자
5
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
도로명주소의 부여되는 도로명/시군구명/법정동(읍면동)명 부여일자 등을 제공합니다.
도로명 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
시군구코드
5
문자
PK1
도로명코드 : 시군구코드(5) + 도로명번호(7)
2
도로명번호
7
문자
3
읍면동일련번호
2
문자
PK2
4
도로명
80
문자
5
영문도로명
80
문자
6
시도명
40
문자
7
시군구명
40
문자
8
읍면동구분
1
문자
0: 읍면, 1:동, 2:미부여
9
읍면동코드
3
문자
법정동기준읍면동코드
10
읍면동명
40
문자
11
사용여부
1
문자
0: 사용, 1: 미사용
12
부여사유
254
문자
13
변경이력사유
1
문자
0: 도로명변경, 1: 도로명폐지, 2: 시도시군구변경, 3: 읍면동변경,
4: 영문도로명변경, 9: 기타
14
변경이력정보
14
문자
도로명코드(12)+ 읍면동일련번호(2)
※ 신규정보일경우“신규”로표시
15
영문시도명
40
문자
16
영문시군구명
40
문자
17
영문읍면동명
40
문자
18
도로구간의 시작지점 기초번호
10
문자
19
도로구간 끝지점 기초번호
10
문자
20
효력발생일
8
문자
효력발생일자(YYYYMMDD)
21
말소일자
8
문자
말소일자(YYYYMMDD)
/* 신규 건 처리 */
INSERT INTO 도로명전체분 (시군구코드, 도로명번호, 도로명, ……)
SELECT A.시군구코드, A.도로명번호, A.도로명, ……
FROM 도로명변동분 A
WHERE NOT EXISTS (SELECT 1
FROM 도로명전체분 C
WHERE C.시군구코드 = A.시군구코드
AND C.도로명번호 = A.도로명번호
AND C.읍면동일련번호 = A.읍면동일련번호)
/* 변동 및 폐지 건 처리 (신규가 아닌 경우는 모두 UPDATE 처리, 폐지건의 경우 사용여부가 '1'로 변경) */
UPDATE 도로명전체분 A
SET (A.시군구코드, A.도로명번호 , A.도로명, ……)
= (SELECT B.시군구코드, B.도로명번호, B.도로명, ……
FROM 도로명변경분 B
WHERE B.시군구코드 = A.시군구코드
AND B.도로명번호 = A.도로명번호
AND B.읍면동일련번호 = A.읍면동일련번호
AND ROWNUM =1)
WHERE EXISTS (SELECT 1
FROM 도로명변동분 C
WHERE C.시군구코드 = A.시군구코드
AND C.도로명번호 = A.도로명번호
AND C.읍면동일련번호 = A.읍면동일련번호)
도로명주소를 구성하는 기본 단위인 건물정보와 해당 건물이 위치한 토지(지번)정보로 구성된 DB입니다.
하나의 도로명주소가 부여된 단지형 아파트의 경우에도 상세 동별 정보가 모두 제공되므로,
건물 단위의 주소 활용에 용이합니다.
도로명코드 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
시군구코드
5
문자
PK1
도로명코드 : 시군구코드(5) + 도로명번호(7)
2
도로명번호
7
문자
3
도로명
80
문자
4
영문도로명
80
문자
5
읍면동일련번호
2
문자
PK2
6
시도명
40
문자
7
시군구명
40
문자
8
읍면동구분
1
문자
0: 읍면, 1:동, 2:미부여
9
읍면동코드
3
문자
법정동기준읍면동코드
10
읍면동명
40
문자
11
상위도로명번호
7
문자
12
상위도로명
80
문자
13
사용여부
1
문자
0:사용, 1:미사용
14
변경이력사유
1
문자
0:도로명변경, 1:도로명폐지, 2:시도시군구변경,
3:읍면동변경, 4:영문도로명변경, 9:기타
15
변경이력정보
14
문자
도로명코드(12)+ 읍면동일련번호(2)
※ 신규정보일경우“신규”로표시
16
영문시도명
40
문자
17
영문시군구명
40
문자
18
영문읍면동명
40
문자
19
고시일자
8
문자
도로명코드 고시일자(YYYYMMDD)
20
말소일자
8
문자
도로명코드 말소일자(YYYYMMDD)
건물정보 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
법정동코드
10
문자
2
시도명
40
문자
3
시군구명
40
문자
4
법정읍면동명
40
문자
5
법정리명
40
문자
6
산여부
1
문자
0:대지, 1:산
7
지번본번(번지)
4
숫자
8
지번부번(호)
4
숫자
9
도로명코드
12
문자
시군구코드(5)+도로명번호(7)
10
도로명
80
문자
11
지하여부
1
문자
0:지상, 1:지하, 2:공중, 3:수상
12
건물본번
5
숫자
13
건물부번
5
숫자
14
건축물대장건물명
40
문자
15
상세건물명
100
문자
16
건물관리번호
25
문자
PK
17
읍면동일련번호
2
문자
18
행정동코드
10
문자
참고용
19
행정동명
20
문자
참고용
20
우편번호
5
문자
2015. 8. 1 이후 기초구역번호(신우편번호) 제공
21
우편일련번호
3
문자
2015. 8. 1 이후 미제공(NULL)
22
다량배달처명
40
문자
2015. 8. 1 이후 미제공(NULL)
23
이동사유코드
2
문자
31:신규, 34:변동, 63:폐지,
72:건물군내일부건물폐지,
73:건물군내일부건물생성
24
고시일자
8
문자
YYYYMMDD
25
변동전도로명주소
25
문자
NULL
26
시군구용건물명
40
문자
27
공동주택여부
1
문자
0:비공동주택, 1:공동주택
28
기초구역번호
5
문자
29
상세주소여부
1
문자
0:미부여, 1:부여
30
비고1
15
문자
31
비고2
15
문자
관련지번 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
법정동코드
10
문자
2
시도명
40
문자
3
시군구명
40
문자
4
법정읍면동명
40
문자
5
법정리명
40
문자
6
산여부
1
문자
0:대지, 1:산
7
지번본번(번지)
4
숫자
8
지번부번(호)
4
숫자
9
도로명코드
12
문자
PK1
시군구코드(5)+도로명번호(7)
10
지하여부
1
문자
PK2
0:지상, 1:지하, 2:공중, 3:수상
11
건물본번
5
숫자
PK3
12
건물부번
5
숫자
PK4
13
지번일련번호
10
숫자
PK5
14
이동사유코드
2
문자
31:신규, 34:변동, 63:폐지
-- 신규건 처리
INSERT INTO 도로명코드전체분 (시군구코드, 도로명번호, 도로명, ……)
SELECT A.시군구코드, A.도로명번호, A.도로명, ……
FROM 도로명코드변동분 A
WHERE NOT EXISTS ( SELECT 1
FROM 도로명코드전체분 C
WHERE C.시군구코드 = A.시군구코드
AND C.도로명번호 = A.도로명번호
AND C.읍면동일련번호 = A.읍면동일련번호);
-- 변동 및 폐지건 처리 (신규가 아닌 경우는 모두 UPDATE 처리, 폐지건의 경우 사용여부가 '1'로 변경)
UPDATE 도로명코드전체분 A
SET (A.시군구코드, A.도로명번호 , A.도로명, ……)
= (SELECT B.시군구코드, B.도로명번호, B.도로명, ……
FROM 도로명코드변경분 B
WHERE B.시군구코드 = A.시군구코드
AND B.도로명번호 = A.도로명번호
AND B.읍면동일련번호 = A.읍면동일련번호
AND ROWNUM=1 )
WHERE EXISTS ( SELECT 1
FROM 도로명코드변동분 C
WHERE C.시군구코드 = A.시군구코드
AND C.도로명번호 = A.도로명번호
AND C.읍면동일련번호 = A.읍면동일련번호);
/*
신규 건 처리
- 테이블 관계의 최상위 레벨인 “건물정보"부터 처리
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
-- 건물정보 처리
UPDATE 건물정보 A
SET (A.법정동코드, A.시도명, A.시군구명, ……) =
(SELECT 법정동코드, 시도명, 시군구명, ……FROM 건물정보변경분 B
WHERE B.건물관리번호 = A.건물관리번호 AND B.이동사유코드 IN ('31', '34','73') AND ROWNUM = 1)
WHERE EXISTS (SELECT 1 FROM 건물정보변경분 C WHERE C.건물관리번호 = A.건물관리번호 AND C.이동사유코드 IN ('31', '34', '73'));
INSERT INTO 건물정보 (법정동코드, 시도명, 시군구명……)
SELECT 법정동코드, 시도명, 시군구명 …… FROM 건물정보변경분 A
WHERE A.이동사유코드 IN ('31', '34', '73') AND NOT EXISTS (SELECT 1 FROM 건물정보 B WHERE B.건물관리번호 = A.건물관리번호);
-- 관련지번 처리
UPDATE 관련지번 A
SET (A.법정동코드, A.시도명, A.시군구명, ……) =
(SELECT B.법정동코드, B.시도명, B.시군구명, …… FROM 관련지번변경분 B
WHERE B.도로명코드 = A.도로명코드 AND B.지하여부 = A.지하여부 AND B.건물본번 = A.건물본번 AND B.건물부번 = A.건물부번
AND B.지번일련번호= A.지번일련번호 AND B.이동사유코드 IN ('31', '34') AND ROWNUM= 1)
WHERE EXISTS (SELECT 1 FROM 관련지번변경분 C
WHERE C.도로명코드 = A.도로명코드 AND C.지하여부 = A.지하여부 AND C.건물본번 = A.건물본번
AND C.건물부번 = A.건물부번 AND C.지번일련번호= A.지번일련번호 AND C.이동사유코드 IN ('31', '34'));
INSERT INTO 관련지번 (법정동코드, 시도명, 시군구명……)
SELECT 법정동코드, 시도명, 시군구명 …… FROM 관련지번변경분 A WHERE A.이동사유코드 IN ('31', '34')
AND NOT EXISTS (SELECT 1 FROM 관련지번 B
WHERE B.도로명코드 = A.도로명코드 AND B.지하여부 = A.지하여부 AND B.건물본번 = A.건물본번
AND B.건물부번 = A.건물부번 AND B.지번일련번호= A.지번일련번호 );
/* ORACLE 9i이상 버전에서 MERGE문 사용 예시 */
MERGE INTO 건물정보 A
USING (SELECT 법정동코드, 시도명, 시군구명, 법정읍면동명...... FROM 건물정보변경분 WHERE 이동사유코드 IN ('31', '34', '73')) B
ON (A.건물관리번호 = B.건물관리번호)
WHEN MATCHED THEN
UPDATE SET A.법정동코드 = B.법정동코드, A.시도명 = B.시도명, A.시군구명 = B.시군구명, ……
WHEN NOT MATCHED THEN
INSERT (A. 법정동코드 , A. 시도명 , A. 시군구명 , A.법정읍면동명, ……)
VALUES (B. 법정동코드 , B. 시도명 , B. 시군구명 , B.법정읍면동명, ……);
/*
폐지 건 처리
- 테이블 관계의 최하위 레벨인 “관련지번” 부터 처리
*/
-- 관련지번처리
DELETE FROM 관련지번 A
WHERE EXISTS (SELECT 1 FROM 관련지번변경분 C
WHERE C.도로명코드 = A.도로명코드 AND C.지하여부 = A.지하여부 AND C.건물본번 = A.건물본번
AND C.건물부번 = A.건물부번 AND C.지번일련번호= A.지번일련번호 AND C.이동사유코드 = '63' );
-- 건물정보처리
DELETE FROM 건물정보 A
WHERE EXISTS (SELECT 1 FROM 건물정보변경분 C WHERE C.건물관리번호 = A.건물관리번호 AND C.이동사유코드 IN ('63','72'));
CREATE VIEW 요약주소VIEW AS
SELECT A.법정동코드,
A.시도명, A.시군구명, A.법정읍면동명, A.도로명코드,
A.도로명, A.지하여부, A.건물본번, A.건물부번, A.시군구건물명,
A.시도명 AS 지번_시도명,
A.시군구명 AS 지번_시군구명, A.법정읍면동명 AS 지번_읍면동명, A.법정리명 AS 지번_법정리명,
A.산여부, A.지번본번, A.지번부번,
A.기초구역번호(새우편번호), A.공동주택여부, A.읍면동일련번호 , Y.읍면동구분
FROM 건물정보 A, 도로명코드 Y
WHERE A.도로명코드 = Y.시군구코드||Y.도로명번호 /* 도로명코드 = 시군구코드(5) +도로명번호(7) */
AND A.읍면동일련번호 = Y.읍면동일련번호
UNION
SELECT A.법정동코드,
A.시도명, A.시군구명, A.읍면동명, A.도로명코드,
A.도로명, A.지하여부, A.건물본번, A.건물부번, A.시군구건물명,
X.시도명 AS 지번_시도명,
X.시군구명 AS 지번_시군구명, X.법정읍면동명 AS 지번_읍면동명, X.법정리명 AS 지번_법정리명,
X.산여부, X.지번본번, X.지번부번,
A.기초구역번호(새우편번호), A.공동주택여부, A.읍면동일련번호 , Y.읍면동구분
FROM 건물정보 A, 관련지번 X, 도로명코드 Y
WHERE A.도로명코드 = X.도로명코드
AND A.지하여부 = X.지하여부
AND A.건물본번 = X.건물본번
AND A.건물부번 = X.건물부번
AND A.도로명코드 = Y.시군구코드||Y.도로명번호
AND A.읍면동일련번호 = Y.읍면동일련번호
SELECT DISTINCT
A.기초구역번호 AS 새우편번호,
A.시도명 || ' ' ||
DECODE(A.시군구명,'','', A.시군구명||' ')|| DECODE(A.읍면동구분, '0', A.읍면동명||' ') ||A.도로명 ||' '||
DECODE(A.지하여부, 0, '', '1','지하', '2', '공중', '3', '수상')||A.건물본번 ||DECODE(A.건물부번, 0, '', '-' || A.건물부번) ||
CASE WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '0') THEN ''
WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '1') THEN DECODE(A.시군구건물명, '', '', '(' || A.시군구건물명 || ')' )
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '0') THEN '(' || A.읍면동명 || ')'
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '1') THEN '(' || A.읍면동명 || DECODE(A.시군구건물명, '', '', ',' || A.시군구건물명 ) || ')'
END AS 도로명주소
FROM 요약주소VIEW A
WHERE A.시도명 LIKE Param1||'%'
AND A.시군구명 LIKE Param2||'%'
AND A.도로명 LIKE Param3||'%'
AND A.건물본번 = Param4
AND A.건물부번 = NVL(Param5,0)
SELECT DISTINCT
A.기초구역번호 AS 새우편번호,
A.시도명 || ' ' ||
DECODE(A.시군구명,'','', A.시군구명||' ')|| DECODE(A.읍면동구분, '0', A.읍면동명||' ') ||A.도로명 ||' '||
DECODE(A.지하여부, 0, '', '1','지하', '2', '공중', '3', '수상')||A.건물본번 ||DECODE(A.건물부번, 0, '', '-' || A.건물부번) ||
CASE WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '0') THEN ''
WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '1') THEN DECODE(A.시군구건물명, '', '', '(' || A.시군구건물명 || ')' )
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '0') THEN '(' || A.읍면동명 || ')'
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '1') THEN '(' || A.읍면동명 || DECODE(A.시군구건물명, '', '', ',' || A.시군구건물명 ) || ')'
END AS 도로명주소
FROM 요약주소VIEW A
WHERE A.지번_시도명 LIKE Param1||'%'
AND A.지번_시군구명 LIKE Param2||'%'
AND A.지번_읍면동명 LIKE Param3||'%'
AND A.산여부 = Param4
AND A.지번본번 = Param5
AND A.지번부번 = NVL(Param6,0)
SELECT A.기초구역번호 AS 새우편번호,
A.시도명 || ' ' ||
DECODE(A.시군구명,'','', A.시군구명||' ')|| DECODE(A.읍면동구분, '0', A.읍면동명||' ') ||A.도로명 ||' '||
DECODE(A.지하여부, 0, '', '1','지하', '2', '공중', '3', '수상')||A.건물본번 ||DECODE(A.건물부번, 0, '', '-' || A.건물부번) ||
CASE WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '0') THEN ''
WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '1') THEN DECODE(A.시군구건물명, '', '', '(' || A.시군구건물명 || ')' )
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '0') THEN '(' || A.읍면동명 || ')'
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '1') THEN '(' || A.읍면동명 || DECODE(A.시군구건물명, '', '', ',' || A.시군구건물명 ) || ')'
END AS 도로명주소
FROM 요약주소VIEW A
WHERE A.시도명 LIKE Param1||'%'
AND A.시군구명 LIKE Param2||'%'
AND A.도로명 LIKE Param3||'%'
AND A.건물본번||DECODE(A.건물부번, 0, '', '-'||A.건물부번) LIKE Param4||'%'
SELECT DISTINCT
A.기초구역번호 AS 새우편번호,
A.시도명 || ' ' ||
DECODE(A.시군구명,'','', A.시군구명||' ')|| DECODE(A.읍면동구분, '0', A.읍면동명||' ') ||A.도로명 ||' '||
DECODE(A.지하여부, 0, '', '1','지하', '2', '공중', '3', '수상')||A.건물본번 ||DECODE(A.건물부번, 0, '', '-' || A.건물부번) ||
CASE WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '0') THEN ''
WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '1') THEN DECODE(A.시군구건물명, '', '', '(' || A.시군구건물명 || ')' )
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '0') THEN '(' || A.읍면동명 || ')'
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '1') THEN '(' || A.읍면동명 || DECODE(A.시군구건물명, '', '', ',' || A.시군구건물명 ) || ')'
END AS 도로명주소
FROM 요약주소VIEW A
WHERE A.시도명 LIKE Param1||'%'
AND A.시군구명 LIKE Param2||'%'
AND A.도로명 LIKE Param3||'%'
AND A.건물본번 = Param4
AND A.건물부번 = NVL(Param5,0)
SELECT ....
TO_NUMBER(NVL(TRANSLATE(A.도로명, '1234567890'||A.도로명, '1234567890'),0)) ORD1 ,
NVL(REPLACE(REPLACE(A.도로명, TRANSLATE(A.도로명, '1234567890'||A.도로명, '1234567890'),
LPAD(TRANSLATE(A.도로명, '1234567890'||A.도로명, '1234567890'), 9, '0')), A.도로명, '') , '0') AS ORD2,
A.건물본번, A.건물부번
FROM 요약주소VIEW A
WHERE A.시도명 LIKE Param1||'%'
AND A.시군구명 LIKE Param2||'%'
AND A.도로명 LIKE Param3||'%'
AND A.건물본번 = Param4
AND A.건물부번 = NVL(Param5,0)
ORDER BY ORD1, ORD2, A.건물본번, A.건물부번
* 도로명주소 표기방법
- 시/도 + 시/군/구 + 읍/면 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호) + (참고항목: 법정동, 공동주택명)
1) 읍/면이고 공동주택인 경우 :
- 시/도 + 시/군/구 + 읍/면 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호) + (참고항목: 공동주택명)
ex) 경기도 가평군 가평읍 가화로 164, 201동 102호(휴먼시아)
2) 읍/면이고 공동주택이 아닌 경우(단독주택 또는 일반 건축물) :
- 시/도 + 시/군/구 + 읍/면 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호)
ex) 강원특별자치도 평창군 대화면 가평로 19-1
3) 동이고 공동주택인 경우 :
- 시/도 + 시/군/구 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호) + (참고항목: 법정동, 공동주택명)
ex) 경기도 고양시 덕양구 화중로 164, 512동 1004호(화정동, 은빛마을5단지아파트)
4) 동이고 공동주택이 아닌 경우(단독주택 또는 일반 건축물) :
- 시/도 + 시/군/구 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호) + (참고항목: 법정동)
ex) 서울특별시 구로구 중앙로 5, 3층(고척동)
도로명주소한글 DB는 여러 개의 건물이 하나의 도로명주소를 갖는 집합 건물(예: 아파트)의 경우
한 건의 주소정보를 제공하도록 구성된 도로명주소기준의 DB입니다.
약 600만여 건의 도로명주소로 구성되어 있습니다.
주소DB 관계도
도로명코드 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
도로명코드
12
문자
PK1
2
도로명
80
문자
3
도로명 로마자
80
문자
4
읍면동일련번호
2
문자
PK2
5
시도명
20
문자
6
시도명 로마자
40
문자
7
시군구명
20
문자
8
시군구명 로마자
40
문자
9
읍면동명
20
문자
10
읍면동명 로마자
40
문자
11
읍면동구분
1
문자
0: 읍면, 1:동, 2:미부여
12
읍면동코드
3
문자
법정동기준읍면동코드
13
사용여부
1
문자
0:사용, 1:미사용
14
변경사유
1
문자
0:도로명변경, 1:도로명폐지, 2:시도시군구변경,
3:읍면동변경, 4:영문도로명변경, 9:기타
15
변경이력정보
14
문자
도로명코드(12)+ 읍면동일련번호(2)
※ 신규정보일경우“신규”로표시
16
고시일자
8
문자
YYYYMMDDD
17
말소일자
8
문자
YYYYMMDDD
도로명주소 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
관리번호
25
문자
PK
2
도로명코드
12
문자
FK1
3
읍면동일련번호
2
문자
FK2
4
지하여부
1
문자
0:지상, 1:지하, 2:공중, 3:수상
5
건물본번
5
숫자
6
건물부번
5
숫자
7
기초구역번호
5
문자
8
변경사유코드
2
문자
31:신규, 34:변경, 63:폐지
9
고시일자
8
문자
NULL
10
변경전 도로명주소
25
문자
NULL
11
상세주소 부여여부
1
문자
0:미부여, 1:부여
지번(대표지번+관련지번) DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
관리번호
25
문자
PK1
FK
2
일련번호
3
문자
PK2
3
법정동코드
10
문자
4
시도명
20
문자
5
시군구명
20
문자
6
법정읍면동명
20
문자
7
법정리명
20
문자
8
산여부
1
문자
0:대지, 1:산
9
지번본번(번지)
4
숫자
10
지번부번(호)
4
숫자
11
대표여부
1
문자
0:관련지번, 1:대표지번
부가정보 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
관리번호
25
문자
PK
FK
2
행정동코드
10
문자
참고용
3
행정동명
20
문자
참고용
4
우편번호
5
문자
5
우편번호 일련번호
3
문자
NULL
6
다량배달처명
40
문자
NULL
7
건축물대장 건물명
40
문자
8
시군구 건물명
40
문자
9
공동주택여부
1
문자
0:비공동주택, 1:공동주택
-- 신규건 처리
INSERT INTO 도로명코드전체분 (도로명코드, 도로명, 도로명로마자, ……)
SELECT A.도로명코드, A.도로명, A.도로명로마자, ……
FROM 도로명코드변동분 A
WHERE NOT EXISTS ( SELECT 1
FROM 도로명코드전체분 C
WHERE C.도로명코드 = A.도로명코드
AND C.읍면동일련번호 = A.읍면동일련번호);
-- 변동 및 폐지건 처리 (신규가 아닌 경우는 모두 UPDATE 처리, 폐지건의 경우 사용여부가 '1'로 변경)
UPDATE 도로명코드전체분 A
SET (A.도로명코드, A.도로명, A.도로명로마자, ……)
= (SELECT B.도로명코드, B.도로명, B.도로명로마자, ……
FROM 도로명코드변동분 B
WHERE B.도로명코드 = A.도로명코드
AND B.읍면동일련번호 = A.읍면동일련번호
AND ROWNUM =1)
WHERE EXISTS ( SELECT 1
FROM 도로명코드변동분 C
WHERE C.도로명코드 = A.도로명코드
AND C.읍면동일련번호 = A.읍면동일련번호);
/*
신규 건 처리
- 테이블 관계의 최상위 레벨인 "주소정보"부터 처리
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
-- 주소정보 처리
UPDATE 주소정보 A
SET (A.도로명코드, A.읍면동일련번호, A.지하여부, ……)
= (SELECT 도로명코드, 읍면동일련번호, 지하여부, ……
FROM 주소정보변경분 B
WHERE B.관리번호 = A.관리번호 AND B.이동사유코드 IN ('31', '34') AND ROWNUM= 1)
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 C WHERE C.관리번호 = A.관리번호 AND C.이동사유코드 IN ('31', '34') );
INSERT INTO 주소정보 (관리번호, 도로명코드……)
SELECT 관리번호, 도로명코드…… FROM 주소정보변경분 A
WHERE A.이동사유코드 IN ('31', '34') AND NOT EXISTS (SELECT 1 FROM 주소정보 B WHERE B.관리번호 = A관리번호);
-- 지번정보 처리
UPDATE 지번정보 A
SET (A.법정동코드, A.시도명, A.시군구명, ……)
= (SELECT B.법정동코드, B.시도명, B.시군구명, …… FROM 지번정보변경분 B
WHERE B.관리번호 = A.관리번호 AND B.일련번호 = A.일련번호 AND B.이동사유코드 IN ('31', '34') AND ROWNUM= 1)
WHERE EXISTS (SELECT 1 FROM 지번정보변경분 C WHERE C.관리번호 = A.관리번호 AND C.일련번호 = A.일련번호 AND C.이동사유코드 IN ('31', '34') );
INSERT INTO 지번정보 (관리번호, 일련번호……)
SELECT 관리번호, 일련번호…… FROM 지번정보변경분 A
WHERE A.이동사유코드 IN ('31', '34') AND NOT EXISTS (SELECT 1 FROM 지번정보 B WHERE B.관리번호 = A.관리번호 AND B.일련번호 = A.일련번호);
-- 부가정보 처리
UPDATE 부가정보 A
SET (A.행정동코드, A.행정동명, A.우편번호, ……)
= (SELECT B.행정동코드, B.행정동명, B.우편번호, …… FROM 부가정보변경분 B
WHERE B.관리번호 = A.관리번호 AND B.이동사유코드 IN ('31', '34') AND ROWNUM= 1)
WHERE EXISTS (SELECT 1 FROM 부가정보변경분 C WHERE C.관리번호 = A.관리번호 AND C.이동사유코드 IN ('31', '34') );
INSERT INTO 부가정보 (관리번호, 행정동코드, 행정동명……)
SELECT 관리번호, 행정동코드, 행정동명…… FROM 부가정보변경분 A
WHERE A.이동사유코드 IN ('31', '34') AND NOT EXISTS (SELECT 1 FROM 부가정보 B WHERE B.관리번호 = A.관리번호);
/* ORACLE 9i이상 버전에서 MERGE문 사용 예시 */
MERGE INTO 주소정보 A
USING (SELECT 관리번호, 도로명코드, 읍면동일련번호, 지하여부...... FROM 주소정보변경분 WHERE 이동사유코드 IN ('31', '34')) B
ON (A.관리번호 = B.관리번호)
WHEN MATCHED THEN
UPDATE SET A.도로명코드 = B.도로명코드, A.읍면동일련번호 = B.읍면동일련번호, B.지하여부 = A.지하여부, ……
WHEN NOT MATCHED THEN
INSERT (A.관리번호, A.도로명코드, A.읍면동일련번호, A.지하여부, ……)
VALUES (B.관리번호, B.도로명코드, B.읍면동일련번호, B.지하여부, ……);
/*
폐지 건 처리
- 테이블 관계의 최하위 레벨인 "지번정보” 및 “부가정보"부터 처리
*/
DELETE FROM 지번정보 A
WHERE EXISTS (SELECT 1 FROM 지번정보변경분 C WHERE C.관리번호 = A.관리번호 AND C.일련번호 = A.일련번호 AND C.이동사유코드 = '63');
DELETE FROM 부가정보 A
WHERE EXISTS (SELECT 1 FROM 부가정보변경분 C WHERE C.관리번호 = A.관리번호 AND C.이동사유코드 = '63');
DELETE FROM 주소정보 A
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 C WHERE C.관리번호 = A.관리번호 AND C.이동사유코드 = '63');
/* 신규 건 처리 */
-- 주소정보
INSERT INTO 주소정보 (관리번호, 도로명코드, ……)
SELECT A.관리번호, A.도로명코드, ……
FROM 주소정보변경분 A
WHERE A.이동사유코드 = '31'
AND NOT EXISTS (SELECT 1 FROM 주소정보 B WHERE B.관리번호 = A관리번호);
-- 지번정보
INSERT INTO 지번정보 (관리번호, 일련번호, ……)
SELECT B.관리번호, B.일련번호, ……
FROM 주소정보변경분 A, 지번정보변경분 B
WHERE A.이동사유코드 = '31'
AND A.관리번호 = B.관리번호
AND NOT EXISTS (SELECT 1 FROM 지번정보 C WHERE C.관리번호 = A관리번호);
-- 부가정보
INSERT INTO 부가정보 (관리번호, 행정동코드, ……)
SELECT B.관리번호, B.행정동코드, ……
FROM 주소정보변경분 A, 부가정보변경분 B
WHERE A.이동사유코드 = '31'
AND A.관리번호 = B.관리번호
AND NOT EXISTS (SELECT 1 FROM 부가정보 C WHERE C.관리번호 = A관리번호);
/* 변경 건 처리 */
-- 주소정보변경
UPDATE 주소정보 A
SET (A.도로명코드, A.읍면동일련번호, A.지하여부, ……)
= (SELECT B.도로명코드, B.읍면동일련번호, B.지하여부, ……
FROM 주소정보변경분 B
WHERE B.관리번호 = A.관리번호 AND B.이동사유코드 = '34')
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 C WHERE C.관리번호 = A.관리번호 AND C.이동사유코드 = '34');
-- 지번정보변경
UPDATE 지번정보 A
SET (A.법정동코드, A.시도명, A.시군구명, ……)
= (SELECT C.법정동코드, C.시도명, C.시군구명, ……
FROM 주소정보변경분 B, 지번정보변경분 C
WHERE C.관리번호 = B.관리번호 AND B.관리번호 = A.관리번호 AND C.일련번호 = A.일련번호 AND B.이동사유코드 = '51')
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 D WHERE D.관리번호 = A.관리번호 AND D.일련번호 = A.일련번호 AND D.이동사유코드 = '51');
-- 우편번호변경
UPDATE 부가정보 A
SET (A.우편번호)
= (SELECT C.우편번호
FROM 주소정보변경분 B, 부가정보변경분 C
WHERE C.관리번호 = B.관리번호 AND B.관리번호 = A.관리번호 AND B.이동사유코드 = '70')
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 D WHERE D.관리번호 = A.관리번호 AND D.이동사유코드 = '70');
-- 건물명변경
UPDATE 부가정보 A
SET (A.건축물대장 건물명, A.시군구 건물명)
= (SELECT C.건축물대장 건물명, C.시군구 건물명
FROM 주소정보변경분 B, 부가정보변경분 C
WHERE C.관리번호 = B.관리번호 AND B.관리번호 = A.관리번호 AND B.이동사유코드 = '71')
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 D WHERE D.관리번호 = A.관리번호 AND D.이동사유코드 = '71');
-- 기타부가정보변경
UPDATE 부가정보 A
SET (A.행정동코드, A.행정동명, A.공동주택여부)
= (SELECT C.행정동코드, C.행정동명, C.공동주택여부
FROM 주소정보변경분 B, 부가정보변경분 C
WHERE C.관리번호 = B.관리번호 AND B.관리번호 = A.관리번호 AND B.이동사유코드 = '79')
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 D WHERE D.관리번호 = A.관리번호 AND D.이동사유코드 = '79');
/* 폐지 건 처리 */
-- 주소정보
DELETE FROM 주소정보 A
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 B WHERE B.관리번호 = A.관리번호 AND B.이동사유코드 = '63');
-- 지번정보
DELETE FROM 지번정보 A
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 B WHERE B.관리번호 = A.관리번호 AND B.이동사유코드 = '63');
-- 부가정보
DELETE FROM 부가정보 A
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 B WHERE B.관리번호 = A.관리번호 AND B.이동사유코드 = '63');
/* 관련지번 변경 처리 */
-- '19년8월 월변동분부터 관련지번변동분 제공(관련지번_변동분.txt), 일변동 지번정보 현행화 방식으로 현행화
-- 관련지번 신규
INSERT INTO 지번정보 (관리번호, 일련번호, ……)
SELECT A.관리번호, A.일련번호, ……
FROM 관련지번변경분 A
WHERE A.이동사유코드 IN ('31', '34')
AND NOT EXISTS (SELECT 1 FROM 지번정보 B WHERE B.관리번호 = A관리번호 AND B.일련번호 = A.일련번호);
-- 관련지번 변경
UPDATE 지번정보 A
SET (A.법정동코드, A.시도명, A.시군구명, ……)
= (SELECT B.법정동코드, B.시도명, B.시군구명, ……
FROM 관련지번변경분 B
WHERE B.관리번호 = A.관리번호 AND B.일련번호 = A.일련번호 AND B.이동사유코드 IN ('31', '34') AND ROWNUM = 1
WHERE EXISTS (SELECT 1 FROM 관련지번변경분 C WHERE C.관리번호 = A.관리번호 AND C.일련번호 = A.일련번호 AND C.이동사유코드 IN ('31', '34') );
-- 관련지번 폐지
DELETE FROM 지번정보 A
WHERE EXISTS (SELECT 1 FROM 관련지번변경분 C WHERE C.관리번호 = A.관리번호 AND C.일련번호 = A.일련번호 AND C.이동사유코드 = '63');
-- 선행조건 : 도로명코드 테이블에 "도로명"으로 인덱스 구성, 도로명주소 테이블에 도로명코드와 읍면동일련번호로 인덱스 구성
SELECT DISTINCT
A.기초구역번호 AS 새우편번호,
B.시도명||' '||DECODE(B.시군구명,'','', B.시군구명||' ')||
DECODE(B.읍면동구분,'0',B.읍면동명||' ')||
B.도로명||' '||
DECODE(A.지하여부,0,'',1,'지하',2,'공중',3,'수상')||
A.건물본번||DECODE(A.건물부번,0,'','-'||A.건물부번)||
CASE WHEN (B.읍면동구분 = '0' AND D.공동주택여부 = '0') THEN ''
WHEN (B.읍면동구분 = '0' AND D.공동주택여부 = '1') THEN DECODE(D.시군구건물명, '', '', '(' || D.시군구건물명 || ')' )
WHEN (B.읍면동구분 = '1' AND D.공동주택여부 = '0') THEN '('||B.읍면동명||')'
WHEN (B.읍면동구분 = '1' AND D.공동주택여부 = '1') THEN '('||B.읍면동명 || DECODE(D.시군구건물명, '', '', ',' || D.시군구건물명 ) ||')'
END AS 도로명주소
FROM 도로명주소 A, 도로명코드 B, 부가정보 D
WHERE A.도로명코드 = B.도로명코드
AND A.읍면동일련번호 = B.읍면동일련번호
AND A.관리번호 = D.관리번호
AND B.시도명 LIKE Param1 || '%'
AND B.시군구명 LIKE Param2 || '%'
AND B.도로명 LIKE Param3 || '%'
AND A.건물본번 = Param4
AND A.건물부번 = NVL(Param5,0)
-- 선행조건 : 지번정보 테이블에 "읍면동명"으로 시작되는 인덱스 구성, 도로명주소 테이블에 도로명코드와 읍면동일련번호로 인덱스 구성
SELECT DISTINCT
A.기초구역번호 AS 새우편번호,
B.시도명||' '||DECODE(B.시군구명,'','', B.시군구명||' ')||
DECODE(B.읍면동구분,'0',B.읍면동명||' ')||
B.도로명||' '||
DECODE(A.지하여부,0,'',1,'지하',2,'공중',3,'수상')||
A.건물본번||DECODE(A.건물부번,0,'','-'||A.건물부번)||
CASE WHEN (B.읍면동구분 = '0' AND D.공동주택여부 = '0') THEN ''
WHEN (B.읍면동구분 = '0' AND D.공동주택여부 = '1') THEN DECODE(D.시군구건물명, '', '', '(' || D.시군구건물명 || ')' )
WHEN (B.읍면동구분 = '1' AND D.공동주택여부 = '0') THEN '('||B.읍면동명||')'
WHEN (B.읍면동구분 = '1' AND D.공동주택여부 = '1') THEN '('||B.읍면동명 || DECODE(D.시군구건물명, '', '', ',' || D.시군구건물명 ) ||')'
END AS 도로명주소
FROM 도로명주소 A, 도로명코드 B, 지번정보 C, 부가정보 D
WHERE A.도로명코드 = B.도로명코드
AND A.읍면동일련번호 = B.읍면동일련번호
AND A.관리번호 = C.관리번호
AND A.관리번호 = D.관리번호
AND C.읍면동명 LIKE Param3 || '%'
AND C.지번본번 = Param4
AND C.지번부번 = NVL(Param5, 0)
SELECT ...
TO_NUMBER(NVL(TRANSLATE(B.도로명, '1234567890'||B.도로명, '1234567890'),0)) ORD1 ,
NVL(REPLACE(REPLACE(B.도로명, TRANSLATE(B.도로명, '1234567890'||B.도로명, '1234567890'),
LPAD(TRANSLATE(B.도로명, '1234567890'||B.도로명, '1234567890'), 9, '0')), B.도로명, '') , '0') AS ORD2,
A.건물본번, A.건물부번
FROM 도로명주소 A, 도로명코드 B, 부가정보 D
WHERE A.도로명코드 = B.도로명코드
AND A.읍면동일련번호 = B.읍면동일련번호
AND A.관리번호 = D.관리번호
AND B.시도명 LIKE Param1 || '%'
AND B.시군구명 LIKE Param2 || '%'
AND B.도로명 LIKE Param3 || '%'
AND A.건물본번 = Param4
AND A.건물부번 = NVL(Param5,0)
ORDER BY ORD1, ORD2, A.건물본번, A.건물부번
* 도로명주소 표기방법
- 시/도 + 시/군/구 + 읍/면 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호) + (참고항목: 법정동, 공동주택명)
1) 읍/면이고 공동주택인 경우 :
- 시/도 + 시/군/구 + 읍/면 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호) + (참고항목: 공동주택명)
ex) 경기도 가평군 가평읍 가화로 164, 201동 102호(휴먼시아)
2) 읍/면이고 공동주택이 아닌 경우(단독주택 또는 일반 건축물) :
- 시/도 + 시/군/구 + 읍/면 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호)
ex) 강원특별자치도 평창군 대화면 가평로 19-1
3) 동이고 공동주택인 경우 :
- 시/도 + 시/군/구 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호) + (참고항목: 법정동, 공동주택명)
ex) 경기도 고양시 덕양구 화중로 164, 512동 1004호(화정동, 은빛마을5단지아파트)
4) 동이고 공동주택이 아닌 경우(단독주택 또는 일반 건축물) :
- 시/도 + 시/군/구 + 도로명 + 건물번호(본번-부번) + 상세주소(동/층/호) + (참고항목: 법정동)
ex) 서울특별시 구로구 중앙로 5, 3층(고척동)
사서함주소DB는 인터넷 우체국(www.epost.kr)에 정기적으로 게시되는 사서함DB를 가공하여 제공합니다.
도로명코드 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
시군구코드
5
문자
PK1
51780
2
도로명번호
7
문자
PK2
9999999
3
도로명
80
문자
사서함
4
영문도로명
80
문자
NULL
5
읍면동일련번호
2
문자
PK3
99
6
시도명
40
문자
강원특별자치도
7
시군구명
40
문자
철원군
8
읍면동구분
1
문자
0 (0: 읍면, 1:동, 2:미부여)
9
읍면동코드
3
문자
256(법정동코드 6자리부터 3Byte)
10
읍면동명
40
문자
갈말읍
11
상위도로명번호
7
문자
12
상위도로명
80
문자
13
사용여부
1
문자
0 (0:사용, 1:미사용)
14
변경이력사유
1
문자
NULL
15
변경이력정보
14
문자
NULL
16
영문시도명
40
문자
NULL
17
영문시군구명
40
문자
NULL
18
영문읍면동명
40
문자
NULL
19
고시일자
8
문자
NULL
20
말소일자
8
문자
NULL
도로명주소 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
법정동코드
10
문자
5178025600
2
시도명
40
문자
강원특별자치도
3
시군구명
40
문자
철원군
4
법정읍면동명
40
문자
갈말읍
5
법정리명
40
문자
NULL
6
산여부
1
문자
0 (0:대지, 1:산)
7
지번본번(번지)
4
숫자
NULL
8
지번부번(호)
4
숫자
NULL
9
도로명코드
12
문자
517809999999
10
도로명
80
문자
사서함
11
지하여부
1
문자
0 (0:지상, 1:지하, 2:공중, 3:수상)
12
건물본번
5
숫자
999 (사서함 주번호)
13
건물부번
5
숫자
99 (사서함 부번호)
14
건축물대장건물명
40
문자
NULL
15
상세건물명
100
문자
NULL
16
건물관리번호
25
문자
PK
5178025600900999000999901
17
읍면동일련번호
2
문자
99
18
행정동코드
10
문자
NULL
19
행정동명
20
문자
NULL
20
우편번호
5
문자
99999
21
우편일련번호
3
문자
NULL
22
다량배달처명
40
문자
NULL
23
이동사유코드
2
문자
NULL
24
고시일자
8
문자
NULL
25
변동전도로명주소
25
문자
NULL
26
시군구용건물명
40
문자
사서함
27
공동주택여부
1
문자
0 (0:비공동주택, 1:공동주택)
28
기초구역번호
5
문자
99999
29
상세주소여부
1
문자
0 (0: 미부여, 1: 부여)
30
비고1
15
문자
NULL
31
비고2
15
문자
NULL
도로명코드 레이아웃 매핑
건물DB - 도로명코드
사서함DB - 도로명코드
순번
컬럼명
크기
형식
매핑 순번
컬럼명
1 시군구코드 5 문자 1 시군구코드
2 도로명번호 7 문자 2 도로명번호
3 도로명 80 문자 3 도로명
4 영문도로명 80 문자 4 영문도로명
5 읍면동일련번호 2 문자 5 읍면동일련번호
6 시도명 40 문자 6 시도명
7 시군구명 40 문자 7 시군구명
8 읍면동구분 1 문자 8 읍면동구분
9 읍면동코드 3 문자 9 읍면동코드
10 읍면동명 40 문자 10 읍면동명
11 상위도로명번호 7 문자 11 상위도로명번호
12 상위도로명 80 문자 12 상위도로명
13 사용여부 1 문자 13 사용여부
14 변경이력사유 1 문자 14 변경이력사유
15 변경이력정보 14 문자 15 변경이력정보
16 영문시도명 40 문자 16 영문시도명
17 영문시군구명 40 문자 17 영문시군구명
18 영문읍면동명 40 문자 18 영문읍면동명
19 고시일자 8 문자 19 고시일자
20 말소일자 8 문자 20 말소일자
도로명주소 레이아웃 매핑
건물DB - 건물정보
사서함DB - 도로명주소
순번
컬럼명
크기
형식
매핑 순번
컬럼명
1 법정동코드 10 문자 1 법정동코드
2 시도명 40 문자 2 시도명
3 시군구명 40 문자 3 시군구명
4 법정읍면동명 40 문자 4 법정읍면동명
5 법정리명 40 문자 5 법정리명
6 산여부 1 문자 6 산여부
7 지번본번(번지) 4 숫자 7 지번본번(번지)
8 지번부번(호) 4 숫자 8 지번부번(호)
9 도로명코드 12 문자 9 도로명코드
10 도로명 80 문자 10 도로명
11 지하여부 1 문자 11 지하여부
12 건물본번 5 숫자 12 건물본번
13 건물부번 5 숫자 13 건물부번
14 건축물대장건물명 40 문자 14 건축물대장건물명
15 상세건물명 100 문자 15 상세건물명
16 건물관리번호 25 문자 16 건물관리번호
17 읍면동일련번호 2 문자 17 읍면동일련번호
18 행정동코드 10 문자 18 행정동코드
19 행정동명 20 문자 19 행정동명
20 우편번호 5 문자 20 우편번호
21 우편일련번호 3 문자 21 우편일련번호
22 다량배달처명 40 문자 22 다량배달처명
23 이동사유코드 2 문자 23 이동사유코드
24 고시일자 8 문자 24 고시일자
25 변동전도로명주소 25 문자 25 변동전도로명주소
26 시군구용건물명 40 문자 26 시군구용건물명
27 공동주택여부 1 문자 27 공동주택여부
28 기초구역번호 5 문자 28 기초구역번호
29 상세주소여부 1 문자 29 상세주소여부
30 비고1 15 문자 30 비고1
31 비고2 15 문자 31 비고2
도로명코드 레이아웃 매핑
주소DB -도로명코드
사서함DB - 도로명코드
순번
컬럼명
크기
형식
매핑 순번
컬럼명
1 도로명코드 12 문자 1+2 시군구코드(5)+도로명번호(7)
2 도로명 80 문자 3 도로명
3 도로명 로마자 80 문자 4 영문도로명
4 읍면동 일련번호 2 문자 5 읍면동일련번호
5 시도명 20 문자 6 시도명
6 시도 로마자 40 문자 16 영문시도명
7 시군구명 20 문자 7 시군구명
8 시군구 로마자 40 문자 17 영문시군구명
9 읍면동명 12 20 10 읍면동명
10 읍면동 로마자 40 문자 18 영문읍면동명
11 읍면동구분 1 문자 8 읍면동구분
12 읍면동코드 3 문자 9 읍면동코드
13 사용여부 1 문자 13 사용여부
14 변경사유 1 문자 14 변경이력사유
15 변경이력정보 14 문자 15 변경이력정보
16 고시일자 8 문자 19 고시일자
17 말소일자 8 문자 20 말소일자
도로명주소 레이아웃 매핑
주소DB-도로명주소
사서함DB-도로명주소
순번
컬럼명
크기
형식
매핑 순번
컬럼명
1 관리번호 25 문자 16 건물관리번호
2 도로명코드 12 문자 9 도로명코드
3 읍면동 일련번호 2 문자 17 읍면동일련번호
4 지하여부 1 문자 11 지하여부
5 건물본번 5 문자 12 건물본번
6 건물부번 5 문자 13 건물부번
7 기초구역번호 5 문자 28 기초구역번호
8 변경사유코드 2 문자 23 이동사유코드
9 고시일자 8 문자 24 고시일자
10 변경전도로명주소 25 문자 25 변동전도로명주소
11 상세주소부여 여부 1 문자 29 상세주소여부
지번 레이아웃 매핑
주소DB-지번
사서함DB-도로명주소
순번
컬럼명
크기
형식
매핑 순번
컬럼명
1 관리번호 25 문자 16 건물관리번호
2 일련번호 3 문자 - default 값 '1'
3 법정동코드 10 문자 1 법정동코드
4 시도명 20 문자 2 시도명
5 시군구명 20 문자 3 시군구명
6 법정읍면동명 20 문자 4 법정읍면동명
7 법정리명 20 문자 5 법정리명
8 산여부 1 문자 6 산여부
9 지번본번(번지) 4 문자 7 지번본번(번지)
10 지번부번(호) 4 문자 8 지번부번(호)
11 대표여부 1 문자 - default 값 '1'
부가정보 레이아웃 매핑
주소DB-부가정보
사서함DB-도로명주소
순번
컬럼명
크기
형식
매핑 순번
컬럼명
1 관리번호 25 문자 16 건물관리번호
2 행정동코드 10 문자 18 행정동코드
3 행정동명 20 문자 19 행정동명
4 우편번호 6 문자 20 우편번호
5 우편번호 일련번호 3 문자 21 우편일련번호
6 다량배달처명 40 문자 22 다량배달처명
7 건축물대장 건물명 40 문자 14 건축물대장건물명
8 시군구 건물명 40 문자 26 시군구용건물명
9 공동주택여부 1 문자 27 공동주택여부
페이지
SELECT
A.우편번호,
A.시도명 ||' '||A.시군구명||
DECODE(B.읍면동구분,'0','',' '||A.읍면동명)||' '||A.도로명||' '
||A.건물본번||DECODE(A.건물부번,'0','','-'||A.건물부번)
FROM 사서함 도로명주소 A, 사서함 도로명코드 B
WHERE A.ROAD_NEW_CD = B.시군구코드||B.도로명번호
AND A.읍면동일련번호 = B.읍면동일련번호
AND A.시도명 LIKE Param1 ||'%'
AND A.시군구명 LIKE Param2 ||'%'
AND A.도로명 LIKE Param3 ||'%'
AND A.건물본번 = Param4
AND A.건물부번 = Param5
주소DB와 관련지번을 결합한 단일 파일로 구성하여 1개월 주기로 제공합니다.
전체분(변동분) DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
법정동코드
10
문자
PK2
2
영문 시도명
40
문자
3
영문 시군구명
40
문자
4
영문 법정읍면동명
40
문자
5
영문 법정리명
40
문자
6
산여부
1
문자
PK3
0: 대지, 1: 산
7
지번본번(번지)
4
숫자
PK4
8
지번부번(호)
4
숫자
PK5
9
도로명코드
12
문자
시군구코드(5)+도로명번호(7)
10
영문 도로명
80
문자
11
지하여부
1
문자
0:지상, 1:지하, 2:공중, 3:수상
12
건물본번
5
숫자
13
건물부번
5
숫자
14
건물관리번호
25
문자
PK1
15
우편번호
5
문자
16
이동사유코드
8
문자
변동분으로 제공(31:생성, 34:변동, 63:삭제)
17
공동주택여부
1
문자
0:비공동주택, 1:공동주택
18
대표지번여부
1
문자
0:관련지번, 1:대표지번
- 도로명주소와 관련지번을 모두 포함하여 제공합니다.
- 전체자료는 시도별로 구분하여 제공되고 있습니다.
- 이동사유코드는 변동분으로 제공되며, 데이터를 갱신하여 최신상태로 유지할 수 있습니다.
(31: INSERT 수행, 34: UPDATE 수행, 63: DELETE 수행)
/*
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
UPDATE 영문주소 A
SET (A.법정동코드, A.영문시도명, A.영문시군구명, ……)
= (SELECT 법정동코드, 영문시도명,영문시군구명, ……
FROM 영문주소변경분 B WHERE B.법정동코드 = A.법정동코드 AND B.산여부= A.산여부
AND B.지번본번= A.지번본번 AND B.지번부번=A.지번부번 AND B.건물관리번호= A.건물관리번호 AND B.이동사유코드 IN ('31', '34') AND ROWNUM= 1)
WHERE EXISTS (SELECT 1
FROM 영문주소변경분 C
WHERE C.법정동코드 = A.법정동코드 AND C.산여부= A.산여부 AND C.지번본번= A.지번본번
AND C.지번부번=A.지번부번 AND C.건물관리번호= A.건물관리번호 AND C.이동사유코드 IN ('31', '34'));
INSERT INTO 영문주소 (법정동코드, 영문시도명, 영문시군구명……)
SELECT 법정동코드, 시도명, 시군구명 …… FROM 영문주소변경분 A
WHERE A.이동사유코드 IN ('31', '34') AND NOT EXISTS (SELECT 1 FROM 영문주소 B WHERE B.법정동코드 = A.법정동코드 AND B.산여부= A.산여부
AND B.지번본번= A.지번본번 AND B.지번부번=A.지번부번 AND B.건물관리번호= A.건물관리번호);
MERGE INTO 영문주소 A
USING (SELECT 법정동코드, 영문시도명, 영문시군구명, ...... FROM 영문주소변경분 WHERE 이동사유코드 IN ('31', '34')) B
ON (A.법정동코드 = B.법정동코드 AND A.산여부= B.산여부 AND A.지번본번= B.지번본번 AND A.지번부번=B.지번부번 AND A.건물관리번호= B.건물관리번호)
WHEN MATCHED THEN
UPDATE SET A.법정동코드 = B.법정동코드, A.영문시도명 = B.영문시도명, A.영문시군구명 = B.영문시군구명, ……
WHEN NOT MATCHED THEN
INSERT (A. 법정동코드 , A. 영문시도명 , A.영문시군구명 , A.영문법정읍면동명, ……)
VALUES (B. 법정동코드 , B. 영문시도명 , B.영문시군구명 , B.영문법정읍면동명, ……)
/* 삭제 건 처리 */
DELETE FROM 영문주소 A
WHERE EXISTS (SELECT 1 FROM 영문주소변경분 C WHERE C.법정동코드 = A.법정동코드 AND C.산여부= A.산여부 AND C.지번본번= A.지번본번
AND C.지번부번=A.지번부번 AND C.건물관리번호= A.건물관리번호 AND C.이동사유코드 = '63')
주소정보와 건물단위로 매칭가능한 상세주소정보를 제공합니다.
상세주소란 도로명주소의 건물번호 뒤에 표시되는 동ㆍ층ㆍ호 정보로, 2가구 이상 거주하는 원룸ㆍ다가구ㆍ단독주택에 부여합니다.
전체분 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
시군구코드
5
문자
PK1
2
동일련번호
10
숫자
PK2
3
층일련번호
10
숫자
PK3
PK (없을 경우 0)
4
호일련번호
10
숫자
PK4
PK (없을 경우 0)
5
호접미사일련번호
10
숫자
PK5
PK (없을 경우 0)
6
동명칭
50
문자
7
층명칭
50
문자
8
호명칭
50
문자
9
호접미사명칭
10
문자
호 상세구분
(예)101호 A, 101호 B
10
지하구분
1
문자
지하층 구분
0:일반, 1:지하
11
건물관리번호
25
문자
건물 연계Key
12
법정동코드
10
문자
도로명주소 연계Key1
13
도로명코드
12
문자
도로명주소 연계Key2
14
지하여부
1
문자
도로명주소 연계Key3
15
건물본번
5
숫자
도로명주소 연계Key4
16
건물부번
5
숫자
도로명주소 연계Key5
변동분 DB 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
시군구코드
5
문자
PK1
2
동일련번호
10
숫자
PK2
3
층일련번호
10
숫자
PK3
PK (없을 경우 0)
4
호일련번호
10
숫자
PK4
PK (없을 경우 0)
5
호접미사일련번호
10
숫자
PK5
PK (없을 경우 0)
6
동명칭
50
문자
7
층명칭
50
문자
8
호명칭
50
문자
9
호접미사명칭
10
문자
호 상세구분
(예)101호 A, 101호 B
10
지하구분
1
문자
지하층 구분
0:일반, 1:지하
11
건물관리번호
25
문자
건물 연계Key
12
법정동코드
10
문자
도로명주소 연계Key1
13
도로명코드
12
문자
도로명주소 연계Key2
14
지하여부
1
문자
도로명주소 연계Key3
15
건물본번
5
숫자
도로명주소 연계Key4
16
건물부번
5
숫자
도로명주소 연계Key5
17
이동사유코드
2
문자
31:신규, 34:변동, 63:폐지
/* 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현 */
UPDATE 상세주소 A
SET (A.동명칭, A.층명칭, A.호명칭, ……)
= (SELECT 동명칭, 층명칭, 호명칭, …… FROM 상세주소변경분 B
WHERE B.시군구코드 = A.시군구코드
AND B.동일련번호 = A.동일련번호
AND B.층일련번호 = A.층일련번호
AND B.호일련번호 = A.호일련번호
AND B.호접미사일련번호 = A.호접미사일련번호
AND C.이동사유코드 IN ('31', '34')
AND ROWNUM = 1)
WHERE EXISTS (SELECT 1 FROM 상세주소변경분 C
WHERE B.시군구코드 = A.시군구코드
AND B.동일련번호 = A.동일련번호
AND B.층일련번호 = A.층일련번호
AND B.호일련번호 = A.호일련번호
AND B.호접미사일련번호 = A.호접미사일련번호
AND C.이동사유코드IN ('31', '34') );
INSERT INTO 상세주소 (시군구코드, 동일련번호, 층일련번호 ……)
SELECT 시군구코드, 동일련번호, 층일련번호 …… FROM 상세주소변경분 A
WHERE A.이동사유코드 IN ('31', '34')
AND NOT EXISTS (SELECT 1 FROM 상세주소 B
WHERE B.시군구코드 = A.시군구코드
AND B.동일련번호 = A.동일련번호
AND B.층일련번호 = A.층일련번호
AND B.호일련번호 = A.호일련번호
AND B.호접미사일련번호 = A.호접미사일련번호 );
/* (참고) ORACLE 9i이상 버전에서 MERGE문 사용 예시 */
MERGE INTO 상세주소 A
USING (SELECT 시군구코드, 동일련번호, 층일련번호, …… FROM 상세주소변경분 WHERE 이동사유코드 IN ('31', '34')) B
ON (B.시군구코드 = A.시군구코드 AND B.동일련번호 = A.동일련번호 AND B.층일련번호 = A.층일련번호 AND B.호일련번호 = A.호일련번호 AND B.호접미사일련번호 = A.호접미사일련번호)
WHEN MATCHED THEN
UPDATE SET A.동명칭 = B.동명칭, A.층명칭 = B.층명칭, ……
WHEN NOT MATCHED THEN
INSERT (A.시군구코드, A.동일련번호, A.층일련번호, A.호일련번호, ……)
VALUES (B.시군구코드, B.동일련번호, B.층일련번호, B.호일련번호, ……)
/* 폐지자료 삭제 */
DELETE FROM 상세주소 A
WHERE EXISTS (SELECT 1 FROM 상세주소변경분 B WHERE B.시군구코드 = A.시군구코드 AND B.동일련번호 = A.동일련번호
AND B.층일련번호 = A.층일련번호 AND B.호일련번호 = A.호일련번호 AND B.호접미사일련번호 = A.호접미사일련번호 AND B.이동사유코드 = '63' )
/* 건물단위 상세주소조회 */
SELECT DECODE(동명칭,NULL,'',동명칭||'동')||
DECODE(지하구분,'1','지하','')||
DECODE(층명칭,NULL,'',' '||층명칭||'층')||
DECODE(호명칭,NULL,'',' '||호명칭||'호')||
DECODE(호접미사명칭,NULL,'',' '||호접미사명칭) AS 상세주소
FROM 상세주소
WHERE 건물관리번호 = '건물관리번호'
ORDER BY 동명칭, 층명칭, 호명칭, 호접미사명칭;
/* 주소단위 상세주소조회 */
SELECT DECODE(동명칭,NULL,'',동명칭||'동')||
DECODE(지하구분,'1','지하','')||
DECODE(층명칭,NULL,'',' '||층명칭||'층')||
DECODE(호명칭,NULL,'',' '||호명칭||'호')||
DECODE(호접미사명칭,NULL,'',' '||호접미사명칭) AS 상세주소
FROM 상세주소
WHERE 법정동코드 = '법정동코드'
AND 도로명코드 = '도로명코드'
AND 지하여부 = '지하여부'
AND 건물본번 = '건물본번'
AND 건물부번 = '건물부번'
ORDER BY 동명칭, 층명칭, 호명칭, 호접미사명칭;
SELECT DISTINCT
A.기초구역번호 AS 우편번호,
A.시도명 || DECODE(A.시군구명,NULL,'',' '|| A.시군구명)||
DECODE(B.읍면동구분, '0', ' '||A.읍면동명, '') ||' '||A.도로명 ||' '||
DECODE(A.지하여부, 0, '', '1','지하', '2', '공중', '3', '수상')||
A.건물본번 || DECODE(A.건물부번, 0, '', '-' || A.건물부번) ||
CASE WHEN (B.읍면동구분 = '0' AND A.공동주택여부 = '0') THEN ''
WHEN (B.읍면동구분 = '0' AND A.공동주택여부 = '1') THEN DECODE(A.시군구용건물명, '', '', '(' || A.시군구건용물명 || ')' )
WHEN (B.읍면동구분 = '1' AND A.공동주택여부 = '0') THEN '(' || A.읍면동명 || ')'
WHEN (B.읍면동구분 = '1' AND A.공동주택여부 = '1') THEN '(' || A.읍면동명 || DECODE(A.시군구건물명, '', '', ',' || A.시군구건물명 ) || ')'
END AS 도로명주소,
DECODE(C.동명칭,NULL,'',' '||C.동명칭||'동')||
DECODE(C.지하구분, '1', ' '지하', '')||
DECODE(C.층명칭,NULL,'',' '||C.층명칭||'층')||
DECODE(C.호명칭,NULL,'',' '||C.호명칭||'호')||
DECODE(C.호접미사명칭,NULL,'',' '||C.호접미사명칭) AS 상세주소
FROM 건물정보 A, 도로명코드 B, 상세주소 C
WHERE B시군구코드 || B.도로명번호 = A.도로명코드
AND A.읍면동일련번호 = B.읍면동일련번호
AND A.건물관리번호 = C.건물관리번호(+)
AND A.시도명 LIKE Param1||'%'
AND A.시군구명 LIKE Param2||'%'
AND A.도로명 LIKE Param3||'%'
AND A.건물본번 = Param4
AND A.건물부번 = NVL(Param5,0)
SELECT DISTINCT
A.기초구역번호 AS 우편번호,
A.시도명 || DECODE(A.시군구명,NULL,'',' '|| A.시군구명)||
DECODE(A.읍면동구분, '0', ' '||A.읍면동명, '') ||' '||A.도로명 ||' '||
DECODE(A.지하여부, 0, '', '1','지하', '2', '공중', '3', '수상')||
A.건물본번 || DECODE(A.건물부번, 0, '', '-' || A.건물부번) ||
CASE WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '0') THEN ''
WHEN (A.읍면동구분 = '0' AND A.공동주택여부 = '1') THEN DECODE(A.시군구용건물명, '', '', '(' || A.시군구건용물명 || ')' )
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '0') THEN '(' || A.읍면동명 || ')'
WHEN (A.읍면동구분 = '1' AND A.공동주택여부 = '1') THEN '(' || A.읍면동명 || DECODE(A.시군구건물명, '', '', ',' || A.시군구건물명 ) || ')'
END AS 도로명주소,
DECODE(E.동명칭,NULL,'',' '||E.동명칭||'동')||
DECODE(E.지하구분, '1', ' '지하', '')||
DECODE(E.층명칭,NULL,'',' '||E.층명칭||'층')||
DECODE(E.호명칭,NULL,'',' '||E.호명칭||'호')||
DECODE(E.호접미사명칭,NULL,'',' '||E.호접미사명칭) AS 상세주소
FROM(SELECT B.기초구역, A.시도명, A.시군구명, A.읍면동명, A.도로명, A.도로명코드,
A.읍면동구분, B.지하여부, B.건물본번, B.건물부번, C.법정동코드,
D.공동주택여부, D.시군구용건물명
FROM 도로명코드 A, 주소 B, 지번 C, 부가정보 D
WHERE A.도로명코드 = B.도로명코드
AND A.읍면동일련번호 = B.읍면동일련번호
AND B.건물관리번호 = C.건물관리번호
AND B.건물관리번호 = D.건물관리번호
AND C.대표여부 = '1') A, 상세주소 E
WHERE A.법정동코드 = E.법정동코드(+)
AND A.도로명코드 = E.도로명코드(+)
AND A.지하여부 = E.지하여부(+)
AND A.건물본번 = E.건물본번(+)
AND A.건물부번 = E.건물부번(+)
AND A.시도명 LIKE Param1||'%'
AND A.시군구명 LIKE Param2||'%'
AND A.도로명 LIKE Param3||'%'
AND A.건물본번 = Param4
AND A.건물부번 = NVL(Param5,0)
SELECT DISTINCT
A.우편번호 AS 우편번호,
A.시도명 || DECODE(A.시군구명,NULL,'',' '|| A.시군구명)||
DECODE(A.읍면동구분, '0', ' '||A.읍면동명, '') ||' '||A.도로명 ||' '||
DECODE(A.지하여부, 0, '', '1','지하', '2', '공중', '3', '수상')||
DECODE(A.건물부번, 0, '', '-' || A.건물부번) ||
CASE WHEN (A.읍면동구분 = '0' AND A.공동주택구분 = '0') THEN ''
WHEN (A.읍면동구분 = '0' AND A.공동주택구분 = '1') THEN DECODE(A.시군구용건물명, '', '', '(' || A.시군구건용물명 || ')' )
WHEN (A.읍면동구분 = '1' AND A.공동주택구분 = '0') THEN '(' || A.읍면동명 || ')'
WHEN (A.읍면동구분 = '1' AND A.공동주택구분 <> '0') THEN '(' || A.읍면동명 || DECODE(A.시군구건물명, '', '', ',' || A.시군구건물명 ) || ')'
END AS 도로명주소,
DECODE(B.동명칭,NULL,'',' '||B.동명칭||'동')||
DECODE(B.지하구분, '1', ' '지하', '')||
DECODE(B.층명칭,NULL,'',' '||B.층명칭||'층')||
DECODE(B.호명칭,NULL,'',' '||B.호명칭||'호')||
DECODE(B.호접미사명칭,NULL,'',' '||B.호접미사명칭) AS 상세주소,
A.건물중심점_X좌표 ||', ' || A.건물중심점_Y좌표 AS 건물중심점좌표,
A.출입구_X좌표 ||', ' || A.출입구_Y좌표 AS 출입구좌표
FROM 건물정보 A, 상세주소 B
WHERE A.건물관리번호 = B.건물관리번호(+)
AND A.시도명 LIKE Param1||'%'
AND A.시군구명 LIKE Param2||'%'
AND A.도로명 LIKE Param3||'%'
AND A.건물본번 = Param4
AND A.건물부번 = NVL(Param5,0)
안전 사고 발생 시 신속 대응 지원 및 내비게이션 등에 안내체계 마련을 위해
도로명과 기초번호를 이용하여 구성한 사물주소정보를 제공합니다.
사물 마스터 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
사물관리번호
18
문자
PK
2
사물명
120
문자
3
사물영문명
60
문자
4
시군구코드
5
문자
5
시도명
40
문자
6
시군구명
40
문자
7
변경일자
8
문자
8
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
* 각 사물별로 사물 마스터 레이아웃이 다릅니다. 자세한 레이아웃은 활용가이드를 참고하세요.
사물 주소 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
사물관리번호
18
문자
PK1
2
사물주소일련번호
18
문자
PK1
3
점공간일련번호
22
숫자
4
시군구코드
5
문자
5
시도명
40
문자
6
시군구명
40
문자
7
읍면동명
40
문자
8
도로명코드
7
문자
9
도로명
80
문자
10
지하여부
1
문자
0:지상, 1:지하, 2:공중, 3:수상
11
주소본번
5
숫자
12
주소부번
4
숫자
13
행정구역코드
10
문자
14
대표주소여부
1
문자
15
변경일자
8
문자
16
변경사유코드
1
문자
승강기 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
사물관리번호
22
숫자
PK
2
사물구분코드
4
문자
PK
3
승강기 고유번호
8
문자
PK
4
승강기 호기
5
문자
예시)1, 2
5
승강기 설치장소
60
문자
예시)1-1, 1-2
6
지상 층수
3
숫자
예시) 2
7
지하 층수
160
숫자
예시) 0
8
시군구코드
5
문자
9
육교명
60
문자
승강기가 설치 된 육교명칭
10
승강기 관리주체
80
문자
승강기관리원에서 사용하는 자료
11
승강기 참고주소
160
문자
승강기관리원에서 사용하는 자료
12
변경일자
8
문자
13
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
14
육교일련번호
22
숫자
출입구 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
사물주소일련번호
22
숫자
PK
2
사물관리번호
22
숫자
PK
3
사물구분코드
4
문자
PK
4
층번호
3
숫자
PK
예시) 1, 2, -1, -2,
*지하층은 음수(-)로 표시
5
층별칭
40
문자
예시)1층, 2층, 3층, gf층
6
행정구역코드
10
문자
7
사물주소
254
문자
예시) 서울특별시 강남구 강남대로 708
8
도로명
160
문자
예시) 강남대로
9
도로명코드
7
문자
10
사물주소본번
5
숫자
예시) 708
11
사물주소부번
5
숫자
예시) 0
12
변경일자
8
문자
13
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
육교 레이아웃
순번
컬럼명
크기
형식
PK
비고
1
육교일련번호
22
숫자
PK
2
육교명
60
문자
승강기가 설치 된 육교명칭
3
시군구코드
5
문자
4
변경일자
8
문자
5
변경사유코드
1
문자
1:신규, 2:변경, 3:삭제
/*
신규 건 처리
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
UPDATE 사물정보 A
SET (A.사물명,A.사물영문명,A.시군구코드,A.시도명……) =
(SELECT 사물명, 사물영문명,시군구코드,시도명…… FROM 사물정보변경분 B
WHEREB.사물관리번호 = A.사물관리번호
AND B.이동사유코드 = '2')
WHERE EXISTS (SELECT 1 FROM 사물정보변경분 C WHERE C.사물관리번호 = A.사물관리번호
AND C.이동사유코드 = '2')
INSERT INTO 사물정보 (사물관리번호, 사물명, 사물영문명,시군구코드,시도명……)
SELECT 사물관리번호,사물명, 사물영문명,시군구코드,시도명…… FROM 사물정보변경분 A
WHERE A.이동사유코드 = '1'
AND NOT EXISTS (SELECT 1 FROM 사물정보 B WHERE B.사물관리번호 = A.사물관리번호)
UPDATE 주소정보 A
SET (A.점공간일련번호,A.시군구코드,A.도로명,A.시도명……) =
(SELECT 점공간일련번호, 시군구코드,도로명,시도명…… FROM 주소정보변경분 B
WHEREB.사물관리번호 = A.사물관리번호
AND B.사물주소일련번호 = A.사물주소일련번호
AND B.이동사유코드 = '2')
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 C WHERE C.사물관리번호 = A.사물관리번호
AND C.사물주소일련번호 = A.사물주소일련번호
AND C.이동사유코드 = '2')
INSERT INTO 주소정보 (사물관리번호,사물주소일련번호,점공간일련번호,시군구코드……)
SELECT 사물관리번호,사물주소일련번호,점공간일련번호,시군구코드…… FROM 주소정보변경분 A
WHERE A.이동사유코드 = '1'
AND NOT EXISTS (SELECT 1 FROM 주소정보 B WHERE B.사물관리번호 = A.사물관리번호
AND B.사물주소일련번호 = A.사물주소일련번호)
-- 폐지처리
DELETE FROM 사물정보 A
WHERE EXISTS (SELECT 1 FROM 사물정보변경분 B WHERE B.사물관리번호 = A.사물관리번호
AND B.이동사유코드 = '3')
DELETE FROM 주소정보 A
WHERE EXISTS (SELECT 1 FROM 주소정보변경분 B WHERE B.사물관리번호 = A.사물관리번호
AND B.사물주소일련번호 = A.사물주소일련번호
AND B.이동사유코드 = '3')
/*
신규 건 처리
- 신규분외에 누락된 자료가 있을 경우를 위해 UPDATE 후 INSERT하도록 구현
*/
UPDATE 승강기정보 A
SET (A.육교명,A.승강기호기,A.지상층수,A.시군구코드……) =
(SELECT 육교명, 승강기호기,지상층수,시군구코드…… FROM 승강기정보변경분 B
WHEREB.사물관리번호 = A.사물관리번호
AND B.이동사유코드 = '2')
WHERE EXISTS (SELECT 1 FROM 승강기정보변경분 C WHERE C.사물관리번호 = A.사물관리번호
AND C.이동사유코드 = '2')
INSERT INTO 승강기정보 (사물관리번호, 사물구분코드, 승강기고유번호,시군구코드……)
SELECT 사물관리번호,사물구분코드,승강기고유번호,시군구코드…… FROM 승강기정보변경분 A
WHERE A.이동사유코드 = '1'
AND NOT EXISTS (SELECT 1 FROM 승강기정보 B WHERE B.사물관리번호 = A.사물관리번호)
UPDATE 출입구정보 A
SET (A.층별칭,A.행정구역코드,A.도로명,A.사물주소본번……) =
(SELECT 층별칭, 행정구역코드,도로명,사물주소본번…… FROM 출입구정보변경분 B
WHEREB.사물관리번호 = A.사물관리번호
AND B.사물주소일련번호 = A.사물주소일련번호
AND B.이동사유코드 = '2')
WHERE EXISTS (SELECT 1 FROM 출입구정보변경분 C WHERE C.사물관리번호 = A.사물관리번호
AND C.사물주소일련번호 = A.사물주소일련번호
AND C.이동사유코드 = '2')
INSERT INTO 출입구정보 (사물관리번호,사물주소일련번호,층번호,행정구역코드……)
SELECT 사물관리번호,사물주소일련번호,층번호,행정구역코드…… FROM 출입구정보변경분 A
WHERE A.이동사유코드 = '1'
AND NOT EXISTS (SELECT 1 FROM 출입구정보 B WHERE B.사물관리번호 = A.사물관리번호
AND B.사물주소일련번호 = A.사물주소일련번호)
UPDATE 육교정보 A
SET (A.육교명, A.시군구코드, A.시도명……) =
(SELECT 육교명, 시군구코드, 시도명…… FROM 육교정보변경분 B
WHEREB.육교일련번호 = A.육교일련번호
AND B.이동사유코드 = '2')
WHERE EXISTS (SELECT 1 FROM 육교정보변경분 C WHERE C.육교일련번호 = A.육교일련번호
AND C.이동사유코드 = '2')
INSERT INTO 육교정보 (육교일련번호, 육교명, 시군구코드……)
SELECT 육교일련번호,육교명, 시군구코드…… FROM 육교정보변경분 A
WHERE A.이동사유코드 = '1'
AND NOT EXISTS (SELECT 1 FROM 육교정보 B WHERE B.육교일련번호 = A.육교일련번호)
-- 폐지처리
DELETE FROM 승강기정보 A
WHERE EXISTS (SELECT 1 FROM 승강기정보변경분 B WHERE B.사물관리번호 = A.사물관리번호
AND B.이동사유코드 = '3')
DELETE FROM 출입구정보 A
WHERE EXISTS (SELECT 1 FROM 출입구정보변경분 B WHERE B.사물관리번호 = A.사물관리번호
AND B.사물주소일련번호 = A.사물주소일련번호
AND B.이동사유코드 = '3')
DELETE FROM 육교정보 A
WHERE EXISTS (SELECT 1 FROM 육교정보변경분 B WHERE B.육교일련번호 = A.육교일련번호
AND B.이동사유코드 = '3')
※ “건물DB”를 “도로명주소 한글(상세주소 제외)”과 “상세주소 동 표시”정보로 분리