これは、pyparsing、Each、resultsnameの続きです。私はpyparsingで大きな成功を収めてきましたが、SQLのorderby句を解析するときに行き詰まります。問題は、どのフィールドも昇順または降順に設定できることです。
したがって、SQLクエリは次のようになります。
SELECT a FROM x WHERE a = b ...
ORDER BY c, d
ORDER BY c asc, d
ORDER BY c asc, d desc
ORDER BY c, d asc
私はいじくり回してきました、そして私が思いついた最高のものは:
order_dir = oneOf('asc desc', caseless=True)
...
Optional( CaselessKeyword('order by') + columnNameList('order') + Optional(order_dir)('order_dir'))
...
のようなものの場合ORDER BY c asc, d desc
、これc
は私が最初に注文するものでありasc
、私の注文ディレクトリですが、に到達しませんd
。
['c asc', 'd desc']
そこに入ることができる限り、私は喜んで出力を次のようなものとして受け取りcolumnNameList
ます。
pyparsingでこれを処理する方法はありますか?私の質問は不明確でしたか?