DB/Oracle
[Oracle] 문자열 변환 (REPLACE 함수) 엔터, 탭 제거
꾹꾹이
2021. 10. 26. 14:04
728x90
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/> 등 경우의 수가 많다면 여러번 치환하는게 좋다