티스토리 뷰

반응형

오라클에서는 VARCHAR2 타입으로 최대 4000 byte 까지만 저장할 수 있습니다.

4000 byte가 넘는 문자열을 저장하기 위해서는 CLOB 타입으로 컬럼을 생성해야 하죠.

 

4000 byte가 넘는 데이터에서 특정 문자열을 찾아 치환(replace)하고 싶을 때 어떻게 해야 할까요?

저장된 값이 4000 byte 이하라면 아래와 같이 replace() 함수를 사용할 수도 있습니다.

EX) BIG_TEXT 컬럼에서 '대한민국' 문자열을 찾아 'KOREA'로 변경

SELECT TO_CLOB(REPLACE(TO_CHAR(BIG_TEXT), '대한민국','KOREA'))
FROM T_TABLE

 

저장된 값이 4000 byte가 넘는다면, 정규 표현식 함수 'REGEXP_REPLACE()'를 사용하면 됩니다.

EX) BIG_TEXT 컬럼에서 '대한민국' 문자열을 찾아 'KOREA'로 변경

SELECT REGEXP_REPLAC(BIG_TEXT, '대한민국','KOREA')
FROM T_TABLE

 

REGEXP_REPLACE() 함수는 정규 표현식을 사용할 수 있기 때문에 쓰임새도 더 많습니다.

가령 CLOB 타입의 CONTENTS라는 컬럼예 'HTML' 문서가 저장되어 있을 때 HTML에서 특정 이미지가 있는 <IMG> 턔그를

지워야 할 경우에도 쉽게 처리할 수 있습니다.

CREATE TABLE t_table
(
	contents CLOB
);

INSERT INTO t_table VALUES('<html> <body> <img src=''a.jpg''/></body></html>');

SELECT contents
      ,REGEXP_REPLACE(contents,'<img(.*?)a.jpg(.*?)/>' , '')
FROM t_table

 

 

 


 

반응형