select decode(zzc,0,0,fz/zzc) from table

解决方案 »

  1.   

    我的ZCC不一定是这个字段的,是不确定的.不过还是要谢谢.
      

  2.   

    select fz/(DECODE(zzc,0,1,zzc)) from table 
    如果不确定,那就只有先判断了,再执行sql语句了!
    不知楼下有没有什么好的办法!
      

  3.   

    我自动生成的一些SQL,其中FZ/ZZC是由前台人员设定的.前台人员不会懂SQL的.他在设定公式时我自动产生SQL,所以我想现在只有在生成SQL时先用正则表达式先取出所有被除数才行.大家还有什么好的办法.
      

  4.   

    我写了个JAVASCRIPT函数,先把公式传入返回来把所有的除数都经过decode.
    function findcs(l_gs)
    {
    var l_newgs,l_str;
    l_newgs = l_gs;
    var i,j,k,l;
    k = 0;
    l = 0;
    i = l_gs.indexOf("/",k);
    while(i>0)
    {
    l_str = "";
    if(l_gs.substr(i+1,1)!="(")
    { k = 0;}
    else
    { k = 1;}
    for(j=i+1;j<l_gs.length;j++)
    {
    if(k>0)
    {//表示有括号开始的。如果有则对应括号就可以结束。
    l_str = l_str + l_gs.substr(j,1)
    if(l_gs.substr(j,1)=="(")
    k = k+1;
    if(l_gs.substr(j,1)==")")
    k = k-1;
    if(k==0)
    {
    j = l_gs.length;
    }
    }
    else
    {//没有括号
    if(l_gs.substr(j,1)=="(")
    l = l+1;
    if(l_gs.substr(j,1)==")")
    l = l-1;
    if(l_gs.substr(j,1)=="+"||l_gs.substr(j,1)=="-")
    {
    j = l_gs.length;
    }
    else
    {
    l_str = l_str + l_gs.substr(j,1)
    }
    }
    }
    if(l!=0)
    l_str = l_str.replace(")","");
    l_newgs = "decode("+l_str+",0,0,"+l_newgs+")";
    i = l_gs.indexOf("/",i+1)
    }
    return l_newgs;
    }