日期:2014-05-20  浏览次数:20817 次

用正则从sql语句中能取出所有列名吗?
对于非合计的列,取出来倒是很简单,但有合计函数的我不知怎么写了。

如:
SQL code
SELECT 
               NVL(SUM(SALARY), 0) SALARYSUM, COUNT(DISTINCT(USERID)) USER_CNT
          FROM USER_INFO


------解决方案--------------------
其实不管用什么函数,那么最中间小括号里面的就是列名
------解决方案--------------------
用“\s*(\S+)\s*,(.*FROM)”与sql匹配,匹上了就提取出group(1),然后sql=group(2)继续提取,直到匹不上,最后用“\s*(\S+)\s*FROM”把最有一列提取出来,逻辑就是这个逻辑,如果你不能保证sql里FROM都是大写的话,自己或一下吧。