반응형

이전포스팅에서 Mysql 쿼리로

구분자로 구분된 문자열을 행으로 분리하는 쿼리를 작성했었는데

https://dzzienki.tistory.com/35

 

MySQL 문자열 구분자 여러개 있을 때 여러 행으로 분리하기

일을 하던 도중 MySQL 에서 한 문자열에 여러개의 구분자가 있을 때,예를 들면 '동해물과;백두산이;마르고;닳도록;하느님이;보우하사;우리나라;만세' 이런 테이블이 있다고 가정했을 때 1절 동해

dzzienki.tistory.com

이번에는 오라클 DB 에서 구분자를 행으로 분리하는 쿼리가 필요하여 작성하였다.

위 내용은 

https://gent.tistory.com/10

 

[Oracle] 문자열 구분자를 행으로 분리 (Split)

오라클 쿼리에서 칼럼에 구분자로 입력된 값을 행으로 분리(Split)하여 조회해야 할 상황이 종종 발생한다. 대부분 값을 조회하여 프로그래밍 코드에서 구분자를 분리하는 작업을 한다. 그러나

gent.tistory.com

해당 블로그에서 참조하였다.

 

위의 블로그에서는

10g 이상 버전과 8i 버전 두가지를 나누어 사용하였으니 필요하신 분들은 참고하시길 바란다.

 

 

 

만약 이런 테이블이 있다고 가정했을 때

JUL CONTENT
 1절  동해물과;백두산이;마르고;닳도록;하느님이;보우하사;우리나라;만세
 2절  남산위에;저소나무;철갑을;두른듯;바람서리;불변함은;우리;기상일세
 3절  가을하늘;공활한데;높고;구름없이;밝은달은;우리가슴;일편;단심일세
 4절  이기상과;이맘으로;충성을;다하여;괴로우나;즐거우나;나라;사랑하세
 후렴  무궁화;삼천리;화려강산;대한사람;대한으로;길이;보전하세

위의 테이블을

JUL CONTENT
 1절  동해물과
 1절  백두산이
 1절  마르고
 1절  닳도록
 1절  하느님이
 1절  보우하사
 1절  우리나라
 1절  만세
 2절  남산위에 
 2절  저소나무

이렇게 바꾸는 쿼리이다.

 

 

 

1
2
3
4
5
SELECT JUL, 
REGEXP_SUBSTR(CONTENT, '[^;]+'1, b.lv) AS CONTENT  --여기 ^ 뒤에 구분된 구분자를 입력한다
FROM akukka, (SELECT LEVEL AS lv FROM dual CONNECT BY LEVEL <=8) b --여기 LEVEL 뒤의 숫자를 나누어질 갯수로 지정해줘야 한다. 
WHERE REGEXP_SUBSTR(CONTENT, '[^;]+'1, b.lv) IS NOT NULL --여기 ^ 뒤에 구분된 구분자를 입력한다
cs
반응형

+ Recent posts