반응형

Oracle instr 함수는 문자열(텍스트)에서 특정 문자의 위치를 리턴해주는 함수입니다.
instr 함수와 substr 함수를 함께 사용하여 특정 문자를 기준으로 텍스트를 파싱하여 가져올 수 있습니다.

아래와 같이 '|' 기호로 구분되어 있는 문자열이 있을 때, '|' 기호의 위치를 찾아 substr 함수를 이용하면 내용별로 잘라올 수 있겠죠.

1
2
SELECT 'Start|안녕,|반가워!|End' 
  FROM dual
cs



이제 '|' 기준으로 문자열을 잘라서 가져와봅시다.

1
2
3
4
5
6
7
8
9
SELECT 내용
     , SUBSTR(내용, 1INSTR(내용, '|'11- 1AS a
     , SUBSTR(내용, 1INSTR(내용, '|'11+ 1INSTR(내용, '|', 1, 2- INSTR(내용, '|', 1, 1) - 1AS b
     , SUBSTR(내용, 1INSTR(내용, '|'12+ 1INSTR(내용, '|', 1, 3- INSTR(내용, '|', 1, 2) - 1AS c
     , SUBSTR(내용, 1INSTR(내용, '|'13+ 1AS d
  FROM (SELECT 'Start|안녕,|반가워!|End' AS "내용"
         FROM dual)
cs


위 쿼리를 실행하면 아래와 같은 결과값이 나옵니다.

내용 

 a

 b

 c

 d

 Start|안녕,|반가워!|End

Start 

 안녕,

반가워! 

End 


인터페이스 전문 송/수신 혹은 배치에서 대량에 데이터를 파일로 읽고 쓸 때 처리 속도와 성능을 위해서 전문 데이터를 가볍게?.. 만들어서 송/수신 혹은 입/출력에 사용합니다.

원부에서는 각각의 컬럼으로 데이터를 관리하지만, 종종 전송이력 혹은 파일 이력을 관리하는 테이블에는 저런 형식의 전문데이터가 통으로 들어가있는 경우가 있습니다.

인터페이스 이력 결과 데이터에서 역으로 프로그램을 찾아갈 때, 가독성있게 표시해서 데이터의 의미를 파악하기 위해 사용했던 쿼리였습니다.


반응형