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 21888 게시물 읽기
No. 21888
[질문]복잡한 문자열 비교, 부분 문자열 얻기
작성자
최민
작성일
2005-03-03 10:50
조회수
3,220

예를 들어 설명하겠습니다.

문자열 1 (기준) : AAA5BBB###CCC____DDD

문자열 2 : AAA5BBB111CCC3333DDD

문자열 3 : AAA5EEE123CCC8762DDD

라고 했을때,

### , ____ 는 숫자를 말하는 것입니다.

 

문 1)

이 두 문자열(문자열1, 문자열2)은 같다고 보며, 다른 두 문자열(문자열1, 문자열3)은 다르다고 봅니다.

비교되는 부분은 특수문자들(###, ____)을 제외한 것입니다. 그리고, 특수문자는 그 길이가 고정된 것이 아닙니다. 따라서, 기준이 되는 문자열이 어떻게 정의 되느냐에 따라 달라지겠죠?

 

위와 같은 것을 쿼리로 구현하려고 하는데..제가 아는 함수가 많지 않아..어렵네여.

 

문 2)

또 하나의 질문이 더 있는데요.

문자열2 에서 기준문자열에 있는 특수문자열부분(###, ____)만을 따로 얻어 낼수 있을까여?

단, 특수문자열을 고정된 것이 아니라 그 길이가 변할 수도 있다는 겁니다.

예) AAA5BBB######CCC________DDD

이런 식으로여..

 

여러분들의 많은 조언 부탁드립니다..

오늘 하루 즐겁게 보내세요..^^

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

1. 나타나는 특수문자의 종류가 고정되어 있다면 translate 함수를 써서 해당 문자를 없앨 수 있을 겁니다..

ex.) replace( translate( 문자열1, '#_0123456789', '§§§§§§§§§§§§'), '§', '')

 

2. 특수문자가 아닌 문자열도 종류가 고정되어 있다면 (예를 들어 영문만 있다면) 위의 방법과 유사하게 translate 시키는 대상을 특수문자가 아닌 문자로 넣으시면 되겠죠.. 그런데 만약 데이터로 나타나는 문자가 매우 다양할 수 있다면.. 음.. 나눠지는 부분이 여러군데이면 적용하기가 좀 어렵겠지만..

첫번째 추출데이터 부분 : substr( 문자열, 숫자가 처음 나타나는 위치, 전체길이에서 숫자나타나는 위치를 뺀 길이만큼) 과 같은 형태로 찾아나갈 수 있을것 같습니다.

ex. ) substr (문자열, instr (translate (문자열, '012..', '§§§..'), '§'), length(문자열) - instr(translate (문자열, '012..', '§§§..'), '§') + 1 ) 

 

* 이런 방법보다 깔끔한 처리가 가능하다면 저도 꼭 알고 싶습니다.. (regular expression 처리가 불가능한 하위 버전에서 가능한 방법으로)

woos님이 2005-03-03 14:29에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
21891한글이 [¡¾??¡Æ] [¡Æ?ª??] 이렇게 깨짐니다. [1]
김정우
2005-03-03
3461
21890하위 조직 정렬? [3]
처버
2005-03-03
1386
21889쿼리 질문입니다. [9]
손님
2005-03-03
1435
21888[질문]복잡한 문자열 비교, 부분 문자열 얻기 [1]
최민
2005-03-03
3220
21887테이블스페이스 생성과 유저 생성에 관해서 [2]
재키
2005-03-03
2818
21886CHAR 문제 ? [1]
최영준
2005-03-03
1033
21885파티션 테이블 initial값 [1]
최영준
2005-03-03
1390
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다