"PRGM_MNGR"."TRACKTB"是表名   里面有好多元素  其中两个是"DURATIONMS","DURATION"
"DURATIONMS"的数据类型是number
"DURATION"的数据类型是varchar
由于"DURATION"里有的显示008:54:43格式,有的显示08:54:43格式。
我想把"DURATION"里的内容换算成毫秒后写入"DURATIONMS"里。
例如当"DURATION"值为008:54:43时把((008*3600+54*60+43)*1000)写入"DURATIONMS"的对应位置上。
是对"PRGM_MNGR"."TRACKTB"的全表中元素"DURATIONMS"的重写
应用软件是oracle 10g。

解决方案 »

  1.   

    SQL> create table tt
      2  (num number(10),var varchar2(20));
     
    Table created
     
    SQL> insert into tt(var) select to_CHAR(sysdate,'HH24:MI:SS') from dual;
     
    1 row inserted
     
    SQL> insert into tt(var) select to_CHAR(sysdate,'HH24:MI:SS') from dual;
     
    1 row inserted
     
    SQL> commit;
     
    Commit complete
     
    SQL> select * from tt;
     
            NUM VAR
    ----------- --------------------
                11:47:59
                11:48:07
     
    SQL> 
    SQL> update tt set num=to_number(substr(var, 1, instr(var, ':', 1, 1) - 1))*3600+
      2                         to_number(substr(var,
      3                                instr(var, ':', 1, 1) + 1,
      4                                instr(var, ':', 1, 2) - instr(var, ':', 1, 1)-1))*60+
      5                         to_number(substr(var,
      6                                instr(var, ':', 1, 2) + 1,
      7                                length(var) - instr(var, ':', 1, 2)))
      8  ;
     
    2 rows updated
     
    SQL> select * from tt;
     
            NUM VAR
    ----------- --------------------
          42479 11:47:59
          42487 11:48:07
     
    SQL>