개발공작소
728x90

 

 

 

 

오라클에서 공백제거를 할 때 쓰이는 함수는 TRIM, LTRIM, RTRIM이 있다. 그 중 가장 많이 쓰이는게 TRIM함수

(내 기준..)

 

각 함수는 다음과 같은 기능을 한다.

 

 

1. TRIM : 문자열의 양측 공백을 제거하는 기능을 제공

2. LTRIM : 좌측의 공백을 제거 + 반복되는 문자 또는 특정문자를 제거하는 기능을 제공

3. RTRIM : 좌측의 공백을 제거 + 반복되는 문자 또는 특정문자를 제거하는 기능을 제공

 

 

직접 한번씩 쿼리문을 작성하면서 이해 해보도록 하자.

 

 

TRIM 함수

 

TRIM함수는 양측의 공백(스페이스바)를 제거한다.

 

기본문법

TRIM('문자열')

SELECT TRIM([문자열 컬럼]) FROM [테이블]

 

샘플 쿼리문

-- 오늘도 DUAL 임시테이블을 사용하도록 하자.

-- 공백제거를 하지 않고 LENGTH함수를 사용하여 공백을 포함하여 길이를 SELECT함
SELECT * FROM (
	-- 좌우 공백 2개를 포함한 길이 : 9
	SELECT LENGTH(' 고급_츄르츄르 ') AS "길이" from DUAL UNION ALL
	-- 우측 공백 1개를 포함한 길이 : 4
	SELECT LENGTH('열빙어 ') AS "길이" from DUAL UNION ALL
	-- 우측 공백 1개를 포함한 길이 : 8
	SELECT LENGTH('Kanagan ') AS "길이" from DUAL
);


-- TRIM함수을 사용하여 공백을 제거후 LENGTH함수로 감싸 공백을 제거한 길이를 SELECT함
SELECT * FROM (
	-- 좌우 공백 2개를 제거한 길이 : 7
	SELECT LENGTH(TRIM(' 고급_츄르츄르 ')) AS "길이" from DUAL UNION ALL
	-- 우측 공백 1개를 제거한 길이 : 3
	SELECT LENGTH(TRIM('열빙어 ')) AS "길이" from DUAL UNION ALL
	-- 우측 공백 1개를 제거한 길이 : 7
	SELECT LENGTH(TRIM('Kanagan ')) AS "길이" from DUAL
);

 

 

 

 

LRTIM 함수

 

LTRIM함수는 좌측의 공백(스페이스바)를 모두 제거하고, 2번째 인자로 [제거 할 문자열]을 넣으면

좌측에 해당 문자열과 같은 모든 문자열을 제거한다. 단 우측의 문자열을 제거되지 않는다.

 

기본문법

LTRIM('문자열')

-- 좌측 공백 제거
SELECT LTRIM([문자열 컬럼]) FROM [테이블]

-- 좌측 공백 제거 + 특정 문자 제거
SELECT LTRIM([문자열 컬럼], '제거할 문자열') FROM [테이블]

 

샘플 쿼리문

-- 좌측 공백 및 특정문자 제거
SELECT * FROM (
	-- 좌측 공백 1개만 제거한 길이 : 8
	SELECT LENGTH(LTRIM(' 고급_츄르츄르 ')) AS "길이" from DUAL UNION ALL
	-- 좌측에 공백이 없으므로 우측 공백을 포함한 길이 : 4
	SELECT LENGTH(LTRIM('열빙어 ')) AS "길이" from DUAL UNION ALL
	-- 좌측에 공백이 없으므로 우측 공백을 포함한 길이 : 8
	SELECT LENGTH(LTRIM('Kanagan ')) AS "길이" from DUAL UNION ALL
	-- 좌측 '카'만 제거하고 우측 '카' + 공백을 포함한 길이 : 11
	SELECT LENGTH(LTRIM('카카KKKanagan카 ', '카')) AS "길이" from DUAL
);

-- LTRIM함수에 2번째 인자 '카'를 넣으니 좌측의 '카'는 모두 제거 된다. 단 우측의 '카'는 제거되지 않음

-- 결과 : KKKanagan카 
SELECT LTRIM('카카KKKanagan카 ', '카') AS "길이" from DUAL;

 

 

RTRIM  함수

 

RTRIM함수는 우측의 공백(스페이스바)를 모두 제거하고, 2번째 인자로 [제거 할 문자열]을 넣으면

우측에 해당 문자열과 같은 모든 문자열을 제거한다. 단 좌측의 문자열을 제거되지 않는다.

 

기본문법

RTRIM('문자열')

-- 우측 공백 제거
SELECT RTRIM([문자열 컬럼]) FROM [테이블]

-- 우측 공백 제거 + 특정 문자 제거
SELECT RTRIM([문자열 컬럼], '제거할 문자열') FROM [테이블]

 

샘플 쿼리문

-- 우측 공백 및 특정문자 제거
SELECT * FROM (
	-- 우측 공백 1개만 제거한 길이 : 8
	SELECT LENGTH(RTRIM(' 고급_츄르츄르 ')) AS "길이" from DUAL UNION ALL
	-- 우측 공백 1개를 제거한 길이 : 3
	SELECT LENGTH(RTRIM('열빙어 ')) AS "길이" from DUAL UNION ALL
	-- 우측 공백 1개를 제거한 길이 : 7
	SELECT LENGTH(RTRIM('Kanagan ')) AS "길이" from DUAL UNION ALL
	-- 우측 '카'만 제거하고 좌측 '카' + 공백을 포함한 길이 : 11
	SELECT LENGTH(RTRIM('카카KKKanagan카', '카')) AS "길이" from DUAL
);

-- 결과 : 카카KKKanagan
SELECT RTRIM('카카KKKanagan카', '카') AS "길이" from DUAL;

 

 

근데 여기서 주의할 게 있다. LTRIM이나 RTRIM에서 2번째 인자를 넣으면 특정문자를 제거하게 되는데

이때 그 특정문자는 맨 좌측 또는 우측을 의미하며, 공백은 제거 되지 않는다.

 

-- 결과 : 카카KKKanagan카  
SELECT RTRIM('카카KKKanagan카  ', '카') AS "길이" from DUAL;
-- 길이 : 14
SELECT LENGTH(RTRIM('카카KKKanagan카  ', '카')) AS "길이" from DUAL;

-- 결과 : 카카KKKanagan카  
SELECT RTRIM('카카KKKanagan카  카카카', '카') AS "길이" from DUAL;
-- 길이 : 14
SELECT LENGTH(RTRIM('카카KKKanagan카  ', '카')) AS "길이" from DUAL;

 

 

첫번째 쿼리 : 가장 우측이 공백으로 끝나지만 '카'라는 단어가 없어 공백이 제거 되지 않는다. => 길이 14

두번째 쿼리 : 가장 우측이 '카카카'로 끝이나, '카카카'가 제거되지만, 우측의 공백은 제거 되지 않는다. => 길이 14

 

 

 

처음에는 공백이든 특정문자든 그냥 싹 다 제거되는지 알았는데, 그게 아니었다. 

이런 특이점을 이해하고 필요할 때 사용하도록 하자.

 

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!