情形是这样的,
传入一个字符串 str:=q/100*5
用replace函数替换后为str2:=500/100*5,其为字符型的,我想要的结果是计算后的结果25
我用select to_number(str2) from dual是不对的,因为str2为字符型哪位高手能给我指点一下啊,多谢!

解决方案 »

  1.   

    select to_number(q)/100*5 from dual 不行吗?
      

  2.   

    /100*5不是固定的,这个公式是从表中取出来的,但每个公式里都有个q,里面的运算符有+ - * /以及()
    简单的说就象JavaScript里的eval()函数所能实现的功能
      

  3.   

    我想LZ的意思是,公式是不固定的,有多个公式,用多个参数也不能完全解决问题。
    我的通常做法是
    存储的是一个SELECT语句,要得到结果,只要用EXECUTE IMMEDIATE就好了。
    比如你的例子,不要传入q/100*5,而是传入“select q/100*5 from dual”
    这时候再进行替换,替换后变成“select 500/100*5 from dual”
    执行这个SQL语句,是可以得到结果的。 
    明白了吗?
      

  4.   

    我感觉楼主.如果试先把str2的值算出来....这时是一个值.....再select to_number(str2) from daul  这不就可以了吗....
      

  5.   

    select to_number(substr(str2,1,instr(str2,'/',1)-1))/to_number(substr(str2,instr(str2,'/',1)+1,instr(str2,'*',1)-instr(str2,'/',1)-1))*to_number(substr(str2,instr(str2,'*',1)+1)) from dual;
      

  6.   

    问题已经解决,谢谢天下有雪,和benny0526