[ORACLE] 한글 특정 글자수에 따라 자르기(SUBSTRB, LENGTH,DECODE이용)
히야~ 오늘도 바쁜 하루였다!
공부할게 항상 산더미다.
구루비에서 배운 내용을 써먹기 위해서 얍얍!!
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 단위로 처리해줌
출처 : 구루비