DB/Oracle

[Oracle] 문자열 변환 (REPLACE 함수) 엔터, 탭 제거

꾹꾹이 2021. 10. 26.
REPLACE 함수

 

REPLACE(컬럼명, '찾을문자', '변환문자')

오라클에서 특정 문자열을 치환하거나 제거하기 위해서는 REPLACE() 함수를 사용하면 된다.

단순 문자열 치환 외에도 엔터값 제거나 <br/>태그를 엔터값 치환에도 많이 사용된다. 

오라클 10g 부터 정규식 사용이 가능한 REGEXP_REPLACE()함수가 추가 되었다.

 

특정문자 치환

REPACE(TEXT, 'NAME', 'NM')

WITH TEST AS (
                    SELECT 'Google Store' NM FROM DUAL
)
SELECT A.NM ,
          REPLACE(A.NM, 'Store', 'STORE') RE_NM
FROM TEST A

 

 

특정문자 제거

REPLACE(TEXT, 'Sol', '')

 

WITH TEST AS (
              SELECT 'Google Store' NM FROM DUAL
)
SELECT A.NM ,      
          REPLACE(A.NM, 'Store', 'STORE') RE_NM
FROM TEST A

 

엔터값 제거

REPLACE(REPLACE(대상컬럼, CHAR(13), ''), CHR(10), '')

WITH TEST AS (
              SELECT 'Google' || CHR(13)||CHR(10) || 'Store' NM FROM DUAL
)
SELECT A.NM ,      
         REPLACE(REPLACE(A.NM, CHR(13), ''), CHR(10), '') RE_NM
FROM TEST A

- 엔터값을 제거하기 위해서는 replace함수를 두번 사용해야 정확히 제거된다

- 윈도우에서 엔터값은 chr(13)chr(10)이며 리눅스에서 엔터값은 chr(10)으로 사용된다

 

탭문자 제거

REPLACE(TEXT, chr(9), '')

WITH TEMP AS (
              SELECT 'Steven' || CHR(9) || 'King' NM FROM DUAL
)
SELECT A.NM ,
          REPLACE(A.NM, CHR(9), '') RE_NM
FROM TEMP A

- 오라클에서 탭문자는 chr(9)를 사용한다

 

--<br/>태그 엔터값으로 치환

REPLACE(TEXT, '<br/>', chr(13)||chr(10))

 

- <br/>태그 치환시 대문자, 소문자를 구분하기 때문에 유의해야 한다

- <br>, <BR/> 등 경우의 수가 많다면 여러번 치환하는게 좋다

 

댓글