[英]Java Regular expression to find out all the columns of a particular table using table alias
[英]How to parse out all columns out of a sql using regular expression?
我想使用正則表達式解析出sql中的所有列,但不知道解析帶有函數的sql。
SELECT
NVL(SUM(MISSIONNO), 0) DISTCNT, COUNT(DISTINCT(USERID)) USERIDCNT
FROM EVTSUPPLYHIST
WHERE EVTCODE = #evtCode#
AND EVTNO = #evtNo#
AND GIFTCODE = #giftCode#
AND SUPPLYDT BETWEEN TO_DATE(#startDate#, 'YYYY/MM/DD HH24:MI:SS')
AND TO_DATE(#endDate#, 'YYYY/MM/DD HH24:MI:SS')
對於上面的該sql,正確的結果應該是DISTCNT和USERIDCNT,因為您可能會猜測它不是純凈的sql,而是基於ibatis的參數化sql。
我建議使用許多SQL表達式解析器之一,例如zql 。 從他們的文檔中,我看到他們從一個SQL表達式創建了一個Java對象,從該數據結構中獲取列名應該很簡單。
如果您可以在執行查詢后等待,則可以很容易地從返回的ResultSet中獲取所有信息。
ResultSetMetaData meta = rs.getMetaData();
int colCount = meta.getColumnCount();
for (int i = 0; i < colCount; i++) {
String colName = meta.getColumnName(i + 1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.