数据如下:
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
...
请高人指教 这个该怎么做?
是不是要写存储过程?有简单办法没?
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
...
请高人指教 这个该怎么做?
是不是要写存储过程?有简单办法没?
解决方案 »
- SQL高手进~~~~~~~~~~~~~~~~~~~~~~~!!!!!!
- 求一存储过程
- Oracle Developer 2000 怎样屏蔽报表列印功能?
- 侦听器中sid配置有误,但仍然能连上,这是为什么啊?
- 各位大侠们,请问在oracle中用sql语句实现千分位怎么办?在线等待
- 多表视图的问题
- 如何连接到Oracle enterprise manager console?
- 为何用to_char(ziduanming,'yyyy-mm-dd hh24:mi') 后总报错: 日期格式对于内部缓冲区过长?
- 我用A用户建立的表,但是由于权限问题,我的程序要以B用户连到这些表上,那么B用户应给怎么设置?
- otn 这两天上不去,谁知道为什么?
- 使用vnc远程安装oracle时,当输入export DISPLAY=0.0.0.0:0.0 xhost +服务器就变得很慢.
- 关于Oracle中的Clob大文本的问题(JDBC)
如果字段中只有数字,那到是可以转~~
to_number(substr(tp,1,instr(tp,'/',1)-1))/500 from tt
sorry,没仔细看。哈哈
这样可以了吧
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
||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