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
운영게시판
최근게시물
MS-SQL Q&A 6946 게시물 읽기
No. 6946
[질문] 주소 검색[시/군/구/동 추출 문의]
작성자
궁금이
작성일
2016-01-14 23:33ⓒ
2016-01-14 23:37ⓜ
조회수
5,077

아래와 같이 주소 정보에서 구역(도/시/군/구/동) 정보를 추출 하려고 하는데요..

추출 데이터 일치(매핑)율이 80% 정도 밖에 안되네요..

일부 데이터는 Like 문만 사용하다 보니..일치 하는것 같은데도..

못 끌어 오는것도 있습니다.

또한 아래처럼 해 보니..성능이 안나오네요..

좋은 방법 있을까요? 속도 개선 및 일치(매핑)율도 올릴수 있는 방법

조언 부탁 드립니다.

 

- SQL Server Vesion : 2012 Standard.

 

 

// 주소 정보 테이블 : TB_Address

NO Address POST Area Area1 Area2 Area3 Area4

1 서울시 강남구 테헤란로 대치동 123 12345 - - - - -

2 서울시 강남구 테헤란로 역삼동 123 12346 - - - - -

3 서울시 강남구 테헤란로 삼성동 123 12347 - - - - -

 

// 구역 정보 테이블 // TB_Area

Area(구역) Area1(도/시) Area2(시) Area3(구/군), Area4(동)

서울 서울 서울시 강남구 대치동

강원 강원 원주시 명동

강원 강원 강원도 정선군 남면

경기 경기 수원시 팔달구 팔달동

경기 경기 수원시 권선구 권선동

 

 

Update TB_Address

set Area = Case When A.Address Like '%' + B.AREA2 + '%' Then B.Area

When A.Address Like '%' + B.AREA3 + '%' Then B.Area End,

Area1 = Case When A.Address Like '%' + B.AREA2 + '%' Then B.Area1

When A.Address Like '%' + B.AREA3 + '%' Then B.Area1 End,

Area2 = Case When A.Address Like '%' + B.AREA2 + '%' Then B.Area2

When A.Address Like '%' + B.AREA3 + '%' Then B.Area2 End,

Area3 = Case When A.Address Like '%' + B.AREA2 + '%' Then B.Area3

When A.Address Like '%' + B.AREA3 + '%' Then B.Area3 End,

Area4 = Case When A.Address Like '%' + B.AREA2 + '%' Then B.Area4

When A.Address Like '%' + B.AREA3 + '%' Then B.Area4 End

from TB_Address A,

TB_Area B

where A.ADDRESS LIKE '%' + B.AREA1 + '%' + B.AREA4 + '%'

 

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

WITH tb_address(no, address, post) AS
(
          SELECT 1, '서울시 강남구 테헤란로 대치동 123', '12345'
UNION ALL SELECT 2, '서울시 강남구 테헤란로 역삼동 123', '12346'
UNION ALL SELECT 3, '서울시 강남구 테헤란로 삼성동 123', '12347'
)
, tb_area(Area, Area1, Area2, Area3, Area4) AS
(
          SELECT '서울', '서울', '서울시', '강남구', '대치동'
UNION ALL SELECT '강원', '강원', '원주시', '명동'  , ''
UNION ALL SELECT '강원', '강원', '강원도', '정선군', '남면'
UNION ALL SELECT '경기', '경기', '수원시', '팔달구', '팔달동'
UNION ALL SELECT '경기', '경기', '수원시', '권선구', '권선동'
)
SELECT a.no, a.address, a.post
     , b0.area
     , b1.area1
     , b2.area2
     , b3.area3
     , b4.area4
  FROM tb_address a
  LEFT OUTER JOIN (SELECT DISTINCT area  FROM tb_area WHERE area  != '') b0
    ON a.address LIKE '%'+b0.area +'%'
  LEFT OUTER JOIN (SELECT DISTINCT area1 FROM tb_area WHERE area1 != '') b1
    ON a.address LIKE '%'+b1.area1+'%'
  LEFT OUTER JOIN (SELECT DISTINCT area2 FROM tb_area WHERE area2 != '') b2
    ON a.address LIKE '%'+b2.area2+'%'
  LEFT OUTER JOIN (SELECT DISTINCT area3 FROM tb_area WHERE area3 != '') b3
    ON a.address LIKE '%'+b3.area3+'%'
  LEFT OUTER JOIN (SELECT DISTINCT area4 FROM tb_area WHERE area4 != '') b4
    ON a.address LIKE '%'+b4.area4+'%'
;

마농(manon94)님이 2016-01-20 18:02에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6950다시 쿼리 확인 부탁드립니다. [5]
궁금해요
2016-01-18
4743
6949혹시 쿼리알림을 사용해보신분이 계신지요?
조치만
2016-01-16
4816
6948쿼리 질문 있습니다. 확인 부탁드립니다. [3]
궁금해요
2016-01-15
4673
6946[질문] 주소 검색[시/군/구/동 추출 문의] [1]
궁금이
2016-01-14
5077
6945MSSQL 다중 테이블 insert
니얼굴맛
2015-12-28
5785
6944update 문장 [1]
멍멍이
2015-12-18
4805
6942MS-SQl -> 오라클 접속시 오류
학습자
2015-12-11
4983
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다