如表T1中,有一个字段为F1,数据如下2*4*3
2*6*5如何通过查询计算出表达式的值。
即结果为:2*4*3 24
2*6*5 60谢谢。
2*6*5如何通过查询计算出表达式的值。
即结果为:2*4*3 24
2*6*5 60谢谢。
解决方案 »
- IIS上WEB SERVICE访问ORACLE的问题,急等,多谢了
- orecal 中怎样背反删除的数据
- 求助,sql实现分支查询问题
- 在plsql中建一个函数实现对字符串“123|456|789"中的“|”判断个数。
- 如何 对时间段进行 分组查询
- 请教大家,日志是怎么做的?
- oracle安装最后口令设置问题?Help!
- 表空间为什么这么大?(在线)
- 分页显示遇到的问题-是否oracle 8 + tomcat 4 不能使用sqlRst.absolute ?困惑 ,读出的数据都是0X开头的"外星语"!
- Oracle存储过程的sql语句执行时间怎么精确到毫秒
- 新手提问~~关于sqlloader的一些其他问题。内详~~~
- 救命,误操作删除表求恢复方法
如果不是固定的,写个函数,把字段传进去,然后程序把字符串拆分再相乘人,传出结果
这样取出*号的个数
然后做个循环
i:=1
result:=to_number(substr(str1,1,instr(str1,'*',1)-1))
while i<num loop
result:=result*to_number( substr(str1,instr(str1,'*',num)+1),instr(str1,'*',num+1)-instr(str1,'*',num)-1)
i:=i+1
end loop; result:=result*to_number( substr(str1,instr(str1,'*',num)+1))
return result
2 as
3 v number;
4 begin
5 execute immediate 'select '||inexp||' from dual' into v;
6 return v;
7 end;
8 /
Function created.
SQL> select fun1('2+3+4') from dual;
FUN1('2+3+4')
-------------
9
没那么麻烦,用动态sql,拼接参数就行了
RETURN NUMBER
IS
ncount NUMBER;
BEGIN
EXECUTE IMMEDIATE 'select ' || inexp || ' from dual' INTO ncount;
RETURN ncount;
END fun1;
可以解决任何合法的表达公式:
SELECT 2*4*5*7 FROM DUAL;
SELECT (23-12)*6-9/3 FROM DUAL;