1. 데이터 load
- 대표지번 우편번호 포함된 자료를 다운 받는다.
- 스키마 및 인덱스를 적당히 먹인다.
- oracle의 경우 sqlloder로 쭉 올린다. (약 600만건)
2. 주소 쿼리
SELECT zipcode,
sido_nm
|| ' '
|| sigun_nm
|| ' '
|| court_dong_nm
|| DECODE (court_lee_nm, '', '', ' ' || court_lee_nm)
|| ' '
|| gee_boun
|| DECODE (gee_boo, '0', '', '-' || gee_boo)
|| DECODE (building_nm, '', '', ' ' || building_nm) AS dong_addr,
sido_nm
|| ' '
|| sigun_nm
|| ' '
|| load_nm
|| DECODE (grave_yn, '1', ' 지하', '2', ' 상공')
|| ' '
|| building_boun
|| DECODE (building_boo, '0', '', '-' || building_boo)
|| DECODE (court_lee_nm,
'', ' ('
|| court_dong_nm
|| DECODE (deli_nm,
'', DECODE (building_nm,
'', '',
', ' || building_nm
),
', ' || deli_nm
)
|| ')'
) AS load_addr
FROM road_addr
WHERE sido_nm = 'ㅇㅇ시'
AND sigun_nm = 'ㅇㅇ구'
AND (court_dong_nm LIKE 'ㅇㅇ동%' OR adm_dong_nm LIKE 'ㅇㅇ동%')
3. 입력값 분석
- detail1은 동/도로명 등
- detail2 는 번지 앞자리/건물번호 앞자리
- detail3는 - 이후의 번지 뒷자리/건물번호 뒷자리
String searchValue = zipCodeForm.getSearchValue().replaceAll(" ", "");
String detail1 = searchValue.replaceAll("[0-9]*(-?)[0-9]+(-?)$", "");
String detailTmp = searchValue.replaceAll(detail1, "");
String detail2 = detailTmp.replaceAll("([0-9]*)(-?)([0-9]*)$", "$1");
String detail3 = detailTmp.replaceAll("([0-9]*)(-?)([0-9]*)$", "$3");
'Project' 카테고리의 다른 글
프로세스 강제 종료 명령 (0) | 2013.03.29 |
---|---|
jad 사용법 (하위 폴더까지 디컴파일) (2) | 2012.06.12 |
sql injection tool (1) | 2011.09.21 |
ant builder sample xml (2) | 2011.06.15 |
Eclipse Plugin url list (8) | 2011.05.19 |