오라클 모든 공백 제거 - olakeul modeun gongbaeg jegeo

오라클에서 공백 제거를 위해 사용할 수 있는 함수는 TRIM()REPLACE()가 있다.

TRIM(), RTRIM(), LTRIM()

  • TRIM  : 문자열의 양쪽 공백을 제거
  • LTRIM : 문자열이 시작되는 부분의 공백 제거
  • RTRIM : 문자열의 끝 부분의 공백 제거

WITH TESTDB AS(

SELECT '20123153' HAKBUN, '김 우근' ENAME FROM DUAL UNION ALL

SELECT '20132477' HAKBUN, '박 상후' ENAME FROM DUAL UNION ALL

SELECT '20146348' HAKBUN, '배 철수' ENAME FROM DUAL

)

SELECT HAKBUN, ENAME

FROM TESTDB

cs

TESTDB 각 컬럼에는 그림과 같이 공백이 있는 데이터들이 있다.

TRIM 함수를 써서 공백이 제거되는지 확인해보자.

먼저 TRIM 함수

SELECT HAKBUN, TRIM(ENAME)

FROM TESTDB

cs

오라클 모든 공백 제거 - olakeul modeun gongbaeg jegeo

☞ 양쪽 공백이 제거 된다.

다음은 LTRIM 함수

SELECT HAKBUN, LTRIM(ENAME)

FROM TESTDB

cs

☞ 왼쪽 공백이 있는 배철수만 공백이 제거되었다.

다음은 RTRIM 함수

SELECT HAKBUN, RTRIM(ENAME)

FROM TESTDB

cs

☞ 그림으로는 확인이 힘든(..) 박상후만 공백이 제거되었다.

REPLACE()

REPLACE() 함수는 문자열을 치환할 때도 사용이 되지만 공백을 제거하는 경우도 사용이 가능하다.

아래처럼!

SELECT HAKBUN, REPLACE(ENAME,' ','')

FROM TESTDB

cs


+ 피드백은 언제나 환영입니다 :)

Oracle에서 TRIM() 으로는 탭 문자가 제거되지 않았다.

찾아본 가장 간단하면서 좋은 방법은 다음과 같았다.

REGEXP_REPLACE(text,'(^[[:space:]]*|[[:space:]]*$)')

REGEXP_REPLACE(text,'(^[[:space:]]*|[[:space:]]*$)')

[출처] https://stackoverflow.com/questions/2268860/trim-whitespaces-new-line-and-tab-space-in-a-string-in-oracle/2274942

오라클 모든 공백 제거 - olakeul modeun gongbaeg jegeo

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 modeun gongbaeg jegeo

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 modeun gongbaeg jegeo

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 modeun gongbaeg jegeo