簡體   English   中英

如何使用正則表達式從sql中解析出所有列?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM