2012-01-06 10 views
0

Regexを使用してSQL Select文の列の全リストを探したいとします。例えばRegExを使用したSplit SQL Select文

Select col1, col2,col3 from tab1; 

必要

[1]: col1 
[2]: col2 
[3]: col3 

一つの方法は、この正規表現

select.*from; 

で、その文字列を分割します。他のより効率的な方法はありますか?

ありがとうございました

+0

正規表現は、最も単純なSQL文でのみ動作します。列エイリアスはどうですか?選択リスト内のサブクエリやサブ選択はどうでしょうか? –

答えて

1

あなたのバージョンが最も効率的です。

あなたでし単一の実行中のすべてのものをつかむ正規表現を構築するが、確かに早く何をやっているようであることを行っていない、それが唯一のfromがないかどうかの後ろには、以下を参照してくださいする先読みその背後にあるselectがあります:

Pattern regex = Pattern.compile("\\w+(?=\\s*(?:,|\\bfrom\\b))(?=.*\\bfrom\\b)"); 
Matcher regexMatcher = regex.matcher(subjectString); 
while (regexMatcher.find()) { 
    matchList.add(regexMatcher.group()); 
} 

したがって、すべてのすべてで、私はあなたが持っているもので行くと思います。アスタリスクを怠惰にするかもしれません。

select.*?from