본문 바로가기
DBMS/ORACLE

[ORACLE] 오라클_문자함수( TRIM, LTRIM, RTRIM : 문자 및 공백제거 )

by 썸머워즈 2019. 2. 15.
반응형

TRIM

  • TRIM([제거할 문자] FROM 문자열) 함수는 특정한 문자를 제거하지만, 제거할 문자를 입력하지 않으면 공백을 제거한다.
  • TRIM은 char을 작성하기에 앞서 옵션을 줄 수 있는데,
    옵션은 LEADING(왼족에서 제거) , TRAILING(오른쪽에서 제거) , BOTH(양쪽에서제거) 이렇게 있으며, 아무 옵션도 설정하지 않으면 기본적으로 BOTH로 자동 설정된다.
  • TRIM은 char부분에 오직 한 개만 작성할 수 있다.
SELECT TRIM('     oracleStudy     ') AS result FROM DUAL; -- 'oracleStudy'
SELECT TRIM('o' FROM 'oracleStudy') AS result FROM DUAL; -- racleStudy
SELECT TRIM('디' FROM '디게 좋은 오라클 스터디') AS result FROM DUAL; -- 게 좋은 오라클 스터
SELECT TRIM(BOTH '디' FROM '디게 좋은 오라클 스터디') AS result FROM DUAL; -- 게 좋은 오라클 스터
SELECT TRIM(LEADING '디' FROM '디게 좋은 오라클 스터디') AS result FROM DUAL; --게 좋은 오라클 스터디
SELECT TRIM(TRAILING '디' FROM '디게 좋은 오라클 스터디') result FROM DUAL; --디게 좋은 오라클 스터
SELECT TRIM(TRAILING '디' FROM '디게 좋은 오라클 스터디 ') result FROM DUAL;--디게 좋은 오라클 스터디

예제를 통해 기본적인 사용법은 배울 수 있다.

 

하지만 하나 신기한 점이 마지막 예제에서는 왜 오른쪽의 "디"가 사라지지 않았을까?

이유는 당연히 공백이 존재하기 때문이다.

(이럴때는 공백역시 지우는 문자열에 추가를 해줘야 하지만 TRIM은 두개 이상을 작성할 수 없기에 에러를 반환한다.)

SELECT TRIM(TRAILING '디게' FROM '디게 좋은 오라클 스터디 ') AS result FROM DUAL; -- ERROR

LTRIM

  • LTRIM([문자열], [제거할 문자열]) 함수는 대상 문자열의 왼쪽에서 특정한 문자를 제거하지만, 제거할 문자를 입력하지 않으면 공백을 제거한다.
SELECT LTRIM('     oracleStudy     ') AS result FROM DUAL; -- 'oracleStudy     '
SELECT LTRIM('디게 좋은 오라클 스터디 ' , '디') AS result FROM DUAL; -- '게 좋은 오라클 스터디'
SELECT LTRIM('디게 좋은 오라클 스터디 ' , '디게 ') AS result FROM DUAL; -- '좋은 오라클 스터디'
SELECT LTRIM('디게 좋은 오라클 스터디 ' , '게다') AS result FROM DUAL; -- '디게 좋은 오라클 스터디'
SELECT LTRIM('디게 좋은 오라클 스터디 ' , '디그다') AS result FROM DUAL; -- '게 좋은 오라클 스터디'
SELECT LTRIM('디게 좋은 오라클 스터디 ' , '디게다') AS result FROM DUAL; -- ' 좋은 오라클 스터디'

예제를 보자마자 이상한점이 바로 보이는데, 그건 TRIM과 다르게 두글자 이상이 가능하다는 점이다.

LTRIM과 RTRIM 두 함수는 두글자 이상이 가능하다.

 

그리고 신기한 특징이 하나 더 있는데,

'디그다'를 썼는데 '디'만 지워지고 출력되는 현상과

'디게다'를 썼는데 '디게'가 지워지는 현상이 참으로 신기하다.

 

아마 유추해보자면 첫글자는 첫글자랑만 비교하고, 두번째는 두번째랑만 비교하고, 세번째는 세번째랑만 비교하여 일치하면 제거하고 아니면 제거하지 않는것으로 유추가 가능하다.

RTRIM

  • RTRIM([문자열], [제거할 문자열]) 함수는 대상 문자열의 오른쪽에서 특정한 문자를 제거하지만, 제거할 문자를 입력하지 않으면 공백을 제거한다.
SELECT RTRIM('     oracleStudy     ') AS result FROM DUAL; -- '     oracleStudy'
SELECT RTRIM('디게 좋은 오라클 스터디 ' , '디') AS result FROM DUAL; -- '디게 좋은 오라클 스터'
SELECT RTRIM('디게 좋은 오라클 스터디 ' , '디터스 ') AS result FROM DUAL; -- '디게 좋은 오라클 '
SELECT RTRIM('디게 좋은 오라클 스터디 ' , '스터디') AS result FROM DUAL; -- '디게 좋은 오라클 스터디 '
SELECT RTRIM('디게 좋은 오라클 스터디' , '디그다') AS result FROM DUAL; -- '디게 좋은 오라클 스터'
반응형


댓글

TOP