long형 replace
2011. 1. 24. 16:17ㆍOracle/Oracle Tip
반응형
-- 테이블 포맷
SQL> desc long_replace
Name Null? Type
------------------ -------- -----------------------
LONGTYPE LONG
ID VARCHAR2(20)
CLOBTYPE CLOB
long형 타입의 컬럼은 replace가 되질 않는다. 아래와 같은 메세지를 뿌리게 된다.
SQL> update long_replace set longtype = replace(longtype,'기능','기능불가');
update long_replace set longtype = replace(longtype,'기능','기능불가')
*
ERROR at line 1:
ORA-00932: 일관성 없는 데이터 유형: NUMBER이(가) 필요하지만 LONG임
방법 :
1. long형 포맷이 아닌 clob형 포맷으로 temp성 테이블을 하나 더 만든다.
2. clob형은 replace가 가능하기때문에 temp성 테이블을 업데이트 시킨다.
3. 실질적인 long형 포맷이 있는 테이블에 temp성 테이블과 비교하여 업데이트를 시킨다.
4. 완료.
SQL> create table temp_replace as select to_lob(longtype) longtype, id, clobtype from long_replace;
Table created.
SQL> update temp_replace set longtype=replace(longtype,'기능','기능불가');
1 row updated.
SQL> update long_replace a
2 set longtype=(select longtype from temp_replace b where a.id=b.id);
1 row updated.
SQL> commit;
Commit complete.
SQL> select * from long_replace; --> 업데이트가 되었는지 확인.
반응형
'Oracle > Oracle Tip' 카테고리의 다른 글
sqlplus 에서 ed(edit) 시 vi편집기 사용. (0) | 2011.11.08 |
---|---|
Range 파티션 테이블 및 테이블 스페이스 삭제 script (0) | 2011.04.14 |
LONG과 CLOB 에 대한 데이터 이전. (0) | 2011.01.04 |
tablespace 생성 스크립트 (0) | 2010.04.30 |
테이블 read only 설정 (0) | 2010.01.27 |