数据如下:
    ct                    tp
  100/5                 2000/100
   90/5                40000/100
  120/5                 5000/100
 2000/5                  100/100
 6000/5                10000/100
   ...                    ...
这两个字段都是varchar型的,ct的分母肯定是5,pt的分母也一定是100,但他们的分子都不一定是什么。
现在想得到这样的结果 
以第一条数据为例 ct* pt=(100/5)*(2000/100)=20*20=400
以第二条数据为例 ct* pt=(90/5)*(40000/100)=18*400=400=7200
...
请高人指教  这个该怎么做?
是不是要写存储过程?有简单办法没?

解决方案 »

  1.   

    这个当然不行了  因为这个字段中包含符号/  所以 不能直接TO_NUMBER  会报错的  
    如果字段中只有数字,那到是可以转~~
      

  2.   

    select to_number(substr(ct,1,instr(ct,'/',1)-1))*
      to_number(substr(tp,1,instr(tp,'/',1)-1))/500 from tt
      

  3.   

    select 'ct*pt=('||ct||')*('||'tp'||')='||to_number(substr(ct,1,instr(ct,'/')-1))/5||'*'||to_number(substr(tp,1,instr(tp,'/')-1))/100||'='||to_number(substr(ct,1,instr(ct,'/')-1))/5*to_number(substr(tp,1,instr(tp,'/')-1))/100 from ttt
      

  4.   


    sorry,没仔细看。哈哈
    这样可以了吧
      

  5.   


    SQL> create table tt (ct varchar2(20), tp varchar2(20));Table created.SQL> insert into tt values ('100/5','2000/100');1 row created.SQL> insert into tt values ('90/5', '40000/100');1 row created.SQL> insert into tt values ('120/5','5000/100');1 row created.SQL> commit;Commit complete.select (to_number(regexp_substr(ct,'\d+')) / 5) * (to_number(regexp_substr(tp,'\d+')) / 100) as "ct * tp" from tt;   ct * tp
    ----------
           400
          7200
          1200
      

  6.   

    select 'ct*pt=('||ct||')*('||tp||')='
    ||to_number(substr(ct,1,instr(ct,'/')-1))/5||'*'
    ||to_number(substr(tp,1,instr(tp,'/')-1))/100||'='
    ||to_number(substr(ct,1,instr(ct,'/')-1))/5*to_number(substr(tp,1,instr(tp,'/')-1))/100 
    from ttt
      

  7.   

    select substr(ct,1,instr(ct,'/')-1)* substr(tp,1,instr('tp','/')-1)/500 "ct*tp" from table_name;