比如to_number'(3+2)'是不行的
这样可以to_number('3'+'2'/2);
求知。。。。。高手解决,谢谢!!!!!
4 个解决方案
#1
你括号里的公式不是oracle的,oracle 不认 % 运算符
#2
-- 自己写个函数:
scott@TBWORA> create table tb(cat_str varchar2(20));
表已创建。
scott@TBWORA> insert into tb(cat_str) values('(2+3)*2+(3+2)/5');
已创建 1 行。
scott@TBWORA>
scott@TBWORA> create or replace function f_cat(c_char varchar2)
2 return number
3 is
4 v_num number(18,4);
5 begin
6 execute immediate 'select '||c_char||' from dual' into v_num;
7 return v_num;
8 exception when others then
9 return null;
10 end;
11 /
函数已创建。
scott@TBWORA>
scott@TBWORA> select cat_str, f_cat(cat_str) as cat_result from tb;
CAT_STR CAT_RESULT
---------------------------------------- ----------
(2+3)*2+(3+2)/5 11
#3
-- 对头:注意:oracle 不认 % 运算符
#4
感谢2楼,immediate这个没见过,我是个初学者,望以后多多指教!
#1
你括号里的公式不是oracle的,oracle 不认 % 运算符
#2
-- 自己写个函数:
scott@TBWORA> create table tb(cat_str varchar2(20));
表已创建。
scott@TBWORA> insert into tb(cat_str) values('(2+3)*2+(3+2)/5');
已创建 1 行。
scott@TBWORA>
scott@TBWORA> create or replace function f_cat(c_char varchar2)
2 return number
3 is
4 v_num number(18,4);
5 begin
6 execute immediate 'select '||c_char||' from dual' into v_num;
7 return v_num;
8 exception when others then
9 return null;
10 end;
11 /
函数已创建。
scott@TBWORA>
scott@TBWORA> select cat_str, f_cat(cat_str) as cat_result from tb;
CAT_STR CAT_RESULT
---------------------------------------- ----------
(2+3)*2+(3+2)/5 11
#3
-- 对头:注意:oracle 不认 % 运算符
#4
感谢2楼,immediate这个没见过,我是个初学者,望以后多多指教!