오라클 중간 공백제거 - olakeul jung-gan gongbaegjegeo

오라클 중간 공백제거 - olakeul jung-gan gongbaegjegeo

TRIM, LTRIM, RTRIM Function

TRIM 함수는 문자열의 시작 또는 끝에서 문자를 제거합니다.공백 문자를 제거하는 데 자주 사용됩니다.

LTRIM 함수는 문자열의 왼쪽에서 지정된 문자를 제거합니다. 

RTRIM 함수는 문자열의 오른쪽에서 지정된 문자를 제거합니다.

이 3개의 함수는 문자열의 공백을 제거하려는 경우 가장 자주 사용되지만, 문자를 제거하는 데에도 사용됩니다.


TRIM Function

TRIM( [ [ LEADING | TRAILING | BOTH ] trim_character FROM ] trim_source )

문자열의 시작 또는 끝에서 지정된 문자를 제거된 문자열을 반환합니다.

매개변수

LEADING

- LEADING을 설정하면 trim_source의 시작 부분에서 trim_character를 제거합니다.

- 생략 가능합니다.

TRAILING

- TRAILING을 설정하면 trim_source 끝 부분에서trim_character를 제거합니다.

- 생략 가능합니다.

BOTH

- BOTH를 지정하면이 함수는 trim_source의 시작과 끝에서 trim_character를 제거 합니다.

- 생략 가능합니다.

trim_character

- trim_source 문자열 에서 제거할 문자입니다.

- 생략하면 공백 문자를 제거합니다.

- 리터럴 값이면 작은따옴표로 묶어야 합니다.

- 단일 문자만 가능합니다.

trim_source

- 문자가 제거되는 문자열 값입니다.

특징

  1. LEADING, TRAILING 또는 BOTH를 지정하지 않으면 BOTH를 지정한 것과 동일한 작업을 수행합니다 . 문자열의 시작과 끝에서 문자를 제거합니다.
  2. trim_character 및 trim_source는 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB 또는 NCLOB 중 하나 일 수 있습니다.
  3. 함수는 trim_source가 문자 데이터 유형인 경우 VARCHAR2 데이터 유형을 반환하고 trim_source가 LOB 데이터 유형인 경우 LOB를 반환합니다. 또한 trim_source와 동일한 문자 데이터 유형으로 반환됩니다.

Example Data

SELECT TRIM(' ORACLE ') AS DEFAULT_EX                      -- Default                        
     , TRIM(' '  FROM  '   ORACLE   ') AS CHAR_EX          -- ' ' 제거
     , TRIM(LEADING '0' FROM '000ORACLE') AS LEADING_EX    -- 시작 부분에서 '0' 제거
     , TRIM(TRAILING '0' FROM 'ORACLE000') AS TRAILING_EX  -- 끝 부분에서 '0' 제거
     , TRIM(BOTH '1' FROM '111ORACLE111') AS BOTH_EX       -- 양쪽에서 '1' 제거
FROM DUAL;
오라클 중간 공백제거 - olakeul jung-gan gongbaegjegeo

LTRIM Function

LTRIM (input_string, [trim_string])

문자열의 왼쪽에서 지정된 문자를 제거합니다. 

매개변수

input_string

- 왼쪽에서 문자가 제거되는 문자열 값입니다.

trim_string

- input_string 문자열에서 제거할 문자입니다.

- 생략하면 공백 문자를 제거합니다.

- 생략 가능합니다.

- 문자열도 가능합니다.

Example Data

SELECT LTRIM('     ORACLE') AS DEFAULT_EX                -- Default
     , LTRIM('123ORACLE', '123') AS LTRIM_EX1            -- '123' 제거
     , LTRIM(' . . . . . . ORACLE', ' . ') AS LTRIM_EX2  -- ' . ' 제거
FROM DUAL;
오라클 중간 공백제거 - olakeul jung-gan gongbaegjegeo

RTRIM Function

RTRIM (input_string, [trim_string])

문자열의 오른쪽에서 지정된 문자를 제거합니다.

매개변수

input_string

- 오른쪽에서 문자가 제거되는 문자열 값입니다.

trim_string

- input_string 문자열 에서 제거할 문자입니다.

- 생략하면 공백 문자를 제거합니다.

- 생략 가능합니다.

- 문자열도 가능합니다.

Example Data

SELECT RTRIM('ORACLE     ') AS DEFAULT_EX                -- Default
     , RTRIM('ORACLE123', '123') AS RTRIM_EX1            -- '123' 제거
     , RTRIM('ORACLE . . . . . . ', ' . ') AS RTRIM_EX2  -- ' . ' 제거
FROM DUAL;
오라클 중간 공백제거 - olakeul jung-gan gongbaegjegeo

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; -- '디게 좋은 오라클 스터'