본문 바로가기
Be Smart/SQL

[Oracle] 오라클 REPLACE 함수 (엔터, 탭 제거)

by 반월하 2021. 11. 16.
728x90

함수 사용 : replace(칼럼명, '찾을 문자', '변환 문자') ('변환 문자' 입력하지 않을 시 빈칸으로 반환)

- 특정문자 치환
replace(이름, 'Steven', 'S.')

- 특정문자 제거
replace(이름, 'King', '') or replace(이름, 'King')

- 엔터값 제거
replace(replace(이름, chr(13),''), chr(10), '')

- 탭문자 제거
replace(이름, chr(9), '')

-<br/>태그 엔터값으로 전환
replace(이름,'<br/>',chr(13)||chr(10))

-전화번호 구분자 제거
replace(전화번호,'-','')

특정 문자 치환

WITH TEMP AS (
    SELECT 'Steven King' 이름 FROM DUAL
)


SELECT A.이름
     , REPLACE(A.이름, 'Steven', 'S.') RE_NM
  FROM TEMP A

- 문자 치환시 대문자, 소문자를 구분하기 때문에 유의해야 한다.

특정 문자 제거

WITH TEMP AS (
    SELECT 'Steven King' 이름 FROM DUAL
)


SELECT A.이름
     , REPLACE(A.이름 ,'King', '') RE_NM
  FROM TEMP A

엔터값 제거

WITH TEMP AS (
    SELECT 'Steven' || CHR(13)||CHR(10) || 'King' 이름 FROM DUAL
)


SELECT A.이름
     , REPLACE(REPLACE(A.이름, CHR(13), ''), CHR(10), '') RE_NM
  FROM TEMP A

- 엔터값을 제거하기 위해서는 replace 함수를 두 번 사용해야 정확하게 제거된다.
- 윈도우에서 엔터값은 chr(13) chr(10) 이며 리눅스에서 엔터값은 chr(10)으로 사용된다

탭문자 제거

WITH TEMP AS (
    SELECT 'Steven' || CHR(9) || 'King' 이름 FROM DUAL
)


SELECT A.이름
     , REPLACE(A.이름, CHR(9), '') RE_NM
  FROM TEMP A

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

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

WITH TEMP AS (
    SELECT 'Steven' || '<br/>' || 'King' 이름 FROM DUAL
)


SELECT A.이름
     , REPLACE(A.이름, '<br/>', CHR(13)||CHR(10)) RE_NM
  FROM TEMP A

-<br/> 태그 치환시 대문자, 소문자를 구분하기 때문에 유의해야 한다
-<br>, <BR/> 등 경우의 수가 많다면 여러번 치환하는게 좋다

전화번호 구분자 제거

WITH TEMP AS (
    SELECT '010-9999-9999' TELNO FROM DUAL
)


SELECT A.TELNO
     , REPLACE(A.TELNO, '-', '') RE_TELNO
  FROM TEMP A

728x90

댓글