XX아~ 열심히 하지마~. 잘하란 말야~

ORACLE에서 Long Type의 Column에 대한 Like 검색 Ver.2 본문

Blog/DB

ORACLE에서 Long Type의 Column에 대한 Like 검색 Ver.2

IamwhatIam 2023. 12. 8. 12:43

내 블로그의 인입 통계를 보면 항상 1위에 올라 있는 글이 아주 오래전에 포스팅 했던  LONG  Type에 대한 Like 검색이다.

오랜만에 Oracle DB를 사용하는 Project에서 일을 하게 되서 생각 난 김에 해당 글에 대한 보완 내용을 메모해 둔다.

 

Oracle은 현재 LONG Data Type을 권장하지 않는다. 하물며 12C 이후에는 사용이 제한되기까지 했다.

LONG 대신에 CLOB을 권장하고 있는데... 어쨌든 기존 시스템이 LONG으로 구축이 되어 있다면 방법이 없지 않은가...

추후 새로 만드는 TABLE에서 Data Type을 LONG 대신 CLOB으로 하면 되겠지만.. 이미 있는 거에서는 써먹어야 하니..

Oracle 9i 이후 버전을 사용하고 있다면 TO_LOB를 사용해서 LONG에 대한 like 검색을 할 수 있다.

 

SELECT *
FROM your_table
WHERE TO_LOB(your_long_column) LIKE '%your_search_string%';

 

만약 기존 테이블을 수정할 수 있는 환경이라면... LONG Data Type을 CLOB로 변경하는 것을 추천한다.

데이터의 손실이 있을 수 있으므로 충분한 테스트 후에 변경하는 것이 바람직하다.

기존 테이블을 Duplicate 해서 동일한 테이블을 만들고 새로 만든 테이블의 ALTER TABLE 해서 LONG을 CLOB로 변경한 후 

충분한 테스트를 거쳐 이상이 없는 경우 기존 테이블 이름으로 변경하는 것이 좋을 것 같다.

-- 새로운 테이블을 생성하고 LONG 컬럼을 CLOB로 변환하여 저장
CREATE TABLE new_table AS SELECT column1, TO_CLOB(column_long) AS column_clob, column3 FROM old_table;

-- 충분한 테스트를 해라. 그 후 새로 생성한 테이블의 이름을 변경해라.

-- 새로 생성한 테이블의 이름을 변경
ALTER TABLE new_table RENAME TO old_table;

 

인덱스, 제약 조건등의 추가 적인 수정이 필요한지 다시한번 확인 후 적용하는게 정신건강에 좋을 듯....