用正则从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都是大写的话,自己或一下吧。