IT 공부/oracle

[ORACLE] 한글 특정 글자수에 따라 자르기(SUBSTRB, LENGTH,DECODE이용)

열정가득그녀 2020. 3. 21. 02:37
728x90

히야~ 오늘도 바쁜 하루였다!

공부할게 항상 산더미다.

 

구루비에서 배운 내용을 써먹기 위해서 얍얍!!

 

30BYTE 단위로 잘라서 2개의 컬럼을 만든다고 생각하고 문제 풀기 시작!!!

 

WITH t AS
(
SELECT '부드러운 빗방울은 굵은 대리석을 꿰뚫는다. -J.릴리-' cmt FROM dual
UNION ALL SELECT '지금 그것을 하지 않는다면 언제 할 수 있는 날이 있겠는가?' FROM dual
UNION ALL SELECT '열광하는 삶보다 한결같은 삶이 더 아름답다.' FROM dual
UNION ALL SELECT '평온한 바다는 결코 유능한 뱃사람을 만들 수 없다.' FROM dual
UNION ALL SELECT '인생은 실패해서 망하는게 아니라 포기할때 망하는 것이다.' FROM dual
)

SELECT  SUBSTRB(CMT, 1, DECODE(LENGTH(SUBSTRB(CMT, 30, 2)), 1, 29,30)) AS CMT11
           ,SUBSTRB(CMT, DECODE(LENGTH(SUBSTRB(CMT, 30, 2)), 1,29,30)) CMT22

           ,CMT

          ,SUBSTRB(CMT,30,2) A 
          ,LENGTH(SUBSTRB(CMT,30,2)) B

FROM T

;

 /* 30BYTE 위치의 길이가 한글이나 아니냐에 따라 끝, 다음컬럼 시작위치가 달라진다. */

 

**SUBSTR('글자', 시작위치, 길이) 

**SUBSTRB('글자', 시작위치, 길이) : BYTE 단위로 처리해줌

 

출처 : 구루비

http://www.gurubee.net/article/25139

728x90
반응형