可以用as,例如
select round(100*field1(nvl(field2,0)*nvl(fun,0),2) as field1,nvl(unsuc_mt_usr_rsn,0) as field2,filed3 from mytable然后分别用rs("field1"),rs("field2")和rs("fiedl3")来取值

解决方案 »

  1.   

    看我问题中的字符串,完全可以匹配的,就是select语句中的每个字段。
      

  2.   

    这样做不太现实吧,这样写怎么办?select * from (select aaa,bbb,ccc from tab where aaa='1')何况,还有更复杂的呢!
      

  3.   

    因为我只考虑截取select和from之间的字符串.
      

  4.   

    因为我只考虑截取select和from之间的字符串.
      

  5.   

    <script>
    var str="select round(100*field1(nvl(field2,0)*nvl(fun,0),2),nvl(unsuc_mt_usr_rsn,0),filed3 from mytable";
    str=str.replace(/\s/g,'');
    var one=str.match(/\(.+?\),/).join('');
    one=one.replace(/\),$/,')');
    var two=str.match(/,[^\(\)]+?\([^\(\)]+?\),/).join('').substring(1);
    two=two.replace(/\),$/,')');
    var three=str.match(/,\w+from/);
    three=three.join('').substring(1).replace('from','');
    alert(one);
    alert(two);
    alert(three);</script>
      

  6.   

    最多只能考虑简单的select情况
    如果select里面有函数什么的 多重嵌套什么的 比较难处理啊
      

  7.   

    这个贴子挂了N多天了吧, 写了一段代码, 可能还不太精确, 呵呵.
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var s = "select round(100*field1(nvl(field2,0)*nvl(fun,0),2)) as field1,nvl(unsuc_mt_usr_rsn,0) as field2,filed3 from mytable";
    while(/(\([^()]+\))/.test(s)) s = s.replace(RegExp.$1, "");
    s = s.replace(/select\s+([\w\W]+)\s+from.*/i, "$1");
    var a = s.match(/(\w+)(?=$|,|\])/g);
    for (var i=0; i<a.length; i++)
    {
      alert("第 "+ (i+1) +" 个字段名 = "+ a[i]);
    }
    //-->
    </SCRIPT>
      

  8.   

    谢谢大家的参与,再开一样的一贴。
    http://community.csdn.net/Expert/TopicView3.asp?id=3931547