把非空的欄位number(7,4)的資料合理轉行成varchar2(32)型別

mengzhaoliang發表於2009-03-23

        把非空的欄位number(7,4)的資料合理轉行成varchar2(32)型別,為了number(7,4)的資料0.6500轉換成varchar2(32)時為.65,需要合理的把.65類似的資料換成0.65

--1  查詢該欄位不為空的行數
select  count(*)  from mlog_comp_explain   t   where   t.quanting_max  is  not  null;
--2  增加一個臨時欄位
alter   table mlog_comp_explain   add   (tempcol varchar2(32));
--3  把需要修改欄位型別的欄位資料存放到臨時欄位中
update   mlog_comp_explain   t   set t.tempcol=t.quanting_max;
--4  把不符合資料型別的資料轉行一下,如.65換成0.65,  7.21還是7.21 
select t.quanting_max,
   case when(substr(to_char(tempcol),0,1)='.')
   then 0 end || to_char(tempcol) as "temp"
 from  mlog_comp_explain  t
 where t.tempcol is not null;
--5  不符資料型別的資料轉行一下,如.65換成0.65,  7.21還是7.21
update   mlog_comp_explain s   set
s.tempcol=
(
   case when(substr(to_char(tempcol),0,1)='.')
   then 0 end || to_char(tempcol)
 )
 
 --6清空欄位的資料,這樣則可以改變該欄位的型別了
 update   mlog_comp_explain t   set t.quanting_max=null;
 --7 改變該欄位的型別
 alter table mlog_comp_explain  modify quanting_max varchar2(32);
 --8 把臨時欄位的資料放回原來的欄位中
 update  mlog_comp_explain  t set t.quanting_max=t.tempcol;
 --9 刪除臨時欄位
 alter table mlog_comp_explain  drop column tempcol;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-578015/,如需轉載,請註明出處,否則將追究法律責任。

相關文章