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 41522 게시물 읽기
No. 41522
주소에서 번지까지만 추출
작성자
쿼리질문
작성일
2018-02-06 11:26
조회수
6,326

 

안녕하세요.  도움 많이 받고 있습니다.

 

WITH T AS (

SELECT '서울 강남구 대치동 111-11  OO빌라 2층'  ADDR FROM DUAL UNION ALL

SELECT '서울 강남구 대치2동 999  XXX수퍼1층 '   ADDR FROM DUAL UNION ALL

SELECT '서울 강남구 대치동 888번지'  ADDR FROM DUAL UNION ALL

)

데이터가 이렇게 있는데서,  번지수까지 추출하고 싶습니다.

 

[결과]

------------ 11-11

------------ 999

------------ 888

 

대치2동 이후 첫 숫자부분, 하이픈 포함 부분을 번지라고 간주하고 추출하고 싶습니다.  

아이디어라도 가능하면 감사하겠습니다.

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

주소는 한번에 처리하기 힘들 수 있습니다. 다소 복잡한 정규표현식을 몇번에 걸쳐야 요소들을 추출할 수 있습니다. 그리고 여러가지 예외사항들이 존재할 수 있다는 점 참고하세요.

아래 쿼리는 참고만 하시고, 커스터마이징 하시길 바랍니다.

 

WITH T AS (

SELECT '서울 강남구 대치동 111-11  OO빌라 2층'  ADDR FROM DUAL UNION ALL

SELECT '서울 강남구 대치2동 999  XXX수퍼1층 '   ADDR FROM DUAL UNION ALL

SELECT '서울 강남구 대치동 888번지'  ADDR FROM DUAL

)

,t1 as

(

-- 동이나 리이후 숫자후 공백

select addr,trim(regexp_replace(regexp_substr(addr,'[동|리][ ]*[0-9]+[ ]+'),'[동|리]')) as bunji

  from t

union all

-- 동이나 리이후 숫자-숫자후 공백

select addr,trim(regexp_replace(regexp_substr(addr,'[동|리][ ]*[0-9]+-[0-9]+[ ]+'),'[동|리]'))

  from t 

union all

-- 동이나 리이후 숫자후 번지

select addr,trim(regexp_replace(regexp_substr(addr,'[동|리][ ]*[0-9]+번지'),'[동|리|번지]'))

  from t

union all

-- 동이나 리이후 숫자-숫자후 번지

select addr,trim(regexp_replace(regexp_substr(addr,'[동|리][ ]*[0-9]+-[0-9]+번지'),'[동|리|번지]'))

  from t 

)

select *

  from t1

 

 

 

황의중(ugomego)님이 2018-02-06 12:05에 작성한 댓글입니다.
이 댓글은 2018-02-06 12:06에 마지막으로 수정되었습니다.

WITH t AS
(
SELECT '서울 강남구 대치동 111-11  OO빌라 2층' addr FROM dual
UNION ALL SELECT '서울 강남구 대치2동 999  XXX수퍼1층 ' FROM dual
UNION ALL SELECT '서울 강남구 대치동 888번지' FROM dual
UNION ALL SELECT '서울 강남구 대치동' FROM dual
UNION ALL SELECT '서울특별시 종로구 종로 19 르미에르' FROM dual
UNION ALL SELECT '경기도 이천시 마장면 양촌리 산19-1' FROM dual
UNION ALL SELECT '경기도 이천시 마장면' FROM dual
)
SELECT addr
     , REGEXP_SUBSTR(addr, '.+[읍면동가로리]( 산?[0-9][^ ]+)?') x
  FROM t
;

마농(manon94)님이 2018-02-06 13:13에 작성한 댓글입니다.
이 댓글은 2018-02-06 13:20에 마지막으로 수정되었습니다.

 황의중님, 마농님 감사합니다~~

쿼리질문님이 2018-02-06 13:55에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41526한 컬럼에서 문자와 숫자 분리하기.. [6]
박양희
2018-02-20
6960
41525단위가 다른 정보 조회하기 [2]
일쌍다반사
2018-02-14
5879
41524view pk 컬럼을 다른테이블에 참조키로 사용할수 없나요?
전윤기
2018-02-14
6011
41522주소에서 번지까지만 추출 [3]
쿼리질문
2018-02-06
6326
41521insert시 점점 느려지는 현상
황의중
2018-02-01
5854
41520하단 합계값에 대한 비율을 구하고 싶습니다. [1]
봉달이
2018-01-31
6489
41519도와 주세요.. 제발.. 쿼리 문제 입니다. [3]
도와주세요..제발
2018-01-31
6130
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다