用正则从sql语句中能取出所有列名吗?对于非合计的列,取出来倒是很简单,但有合计函数的我不知怎么写了。如:S
用正则从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都是大写的话,自己或一下吧。
