도로명주소 안내시스템 개발자센터

Tech & Tips 상세보기 | 도로명주소 개발자센터

Tech & Tips

API, DB, 전자지도등 도로명주소를 이용한 기술개발 및 활용팁을 올려주세요

[주소DB구축] 주소 검색 시 검색 결과 정렬 예시 (H2 DB)

4108님의 제안

  • 댓글 : 0
  • 조회수 : 770
  • 추천수 26 +1

2017-09-14

오픈소스로 제공되는 H2DB로 로컬디비를 구축하여 자료 조회시 도로명주소 순으로 정렬하는 샘플쿼리입니다.
개발에 참고하시기 바랍니다.
ORACLE TRANSLATE와 유사한 REGEXP_REPLACE 함수를 활용하여 작성하였습니다. (주소DB로 구축)

=================================================
   대학로     => 대학로,   00000000000000000000
   대학로10길 => 대학로길, 00000000000000000010
   대학로2길  => 대학로길, 00000000000000000002
=================================================
   로 조회되어 정렬됩니다.
  
SELECT A.기초구역번호 AS "우편번호",
       B.시도명||' '||B.시군구명 ||' '||DECODE(B.읍면동구분 ,'0',B.읍면동명 ,'')||' '||
           B.도로명 ||DECODE(A.지하여부 ,0,' ',1,' 지하',2,' 공중')||
           A.건물본번 ||DECODE(A.건물부번 ,0,'','-'||A.건물부번 )||
           CASE WHEN (B.읍면동구분 = '0' AND C.공동주택여부  = '0') THEN ''
                    WHEN (B.읍면동구분 = '0' AND C.공동주택여부  ='1') THEN Decode(IFNULL(C.시군구용건물명,''), '', '', ' (' || C.시군구용건물명 || ')' )
                    WHEN (B.읍면동구분 = '1' AND C.공동주택여부  ='0') THEN ' ('||B.읍면동명 ||')' 
                    WHEN (B.읍면동구분 = '1' AND C.공동주택여부  ='1') THEN ' ('||B.읍면동명 || Decode(IFNULL(C.시군구용건물명,''), '', '', ',' || C.시군구용건물명 ) ||')'
           END AS "도로명주소",
       REGEXP_REPLACE(B.도로명, '[0-9 ]*', '') AS "정렬기준1",
       LPAD(REGEXP_REPLACE(REGEXP_REPLACE(B.도로명, '[가-힣 ]', '', 'i'),'[A-Z ]*','','i'),20,'0') AS "정렬기준2"
  FROM MATCHING_JUSO A,  MATCHING_ROAD  B, MATCHING_ADDINFO  C
 WHERE A.도로명코드 = B.도로명코드
   AND A.읍면동일련번호  = B.읍면동일련번호
   AND A.건물관리번호  = C.건물관리번호
   AND B.시도명 LIKE Param1 || '%'
   AND B.시군구명 LIKE Param2 || '%'
   AND B.도로명 LIKE Param3 || '%'
   AND A.건물본번 = Param4
   AND A.건물부번 = Param5
 ORDER BY B.시도명, B.시군구명, REGEXP_REPLACE(B.도로명, '[0-9 ]*', ''), LPAD(REGEXP_REPLACE(REGEXP_REPLACE(B.도로명, '[가-힣 ]', '', 'i'),'[A-Z ]*','','i'),20,'0'), A.건물본번, A.건물부번

 

댓글쓰기

댓글쓰기