これは続きですpyparsing, Each, results nameです。私はpyparsingで大きな成功を収めてきましたが、SQL order by節を解析するときには止まっています。問題は、いずれのフィールドも昇順または降順に設定できることです。省略可能なサブフィールド
ので、SQLクエリは次のようになります。、ORDER BY c asc, d desc
ような何かのために
order_dir = oneOf('asc desc', caseless=True)
...
Optional(CaselessKeyword('order by') + columnNameList('order') + Optional(order_dir)('order_dir'))
...
:私は手探りしてきた、と私が思い付くした最高のがある
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
これはc
が私が注文した最初のもので、asc
は私の注文ですが、d
には届きません。
私はのように出力しても、そこにはまだcolumnNameList
が得られます。
これを処理する方法はありますか。私の質問は不明でしたか?
私は多分あなたは 'columnNameList'を変更したいと思いますか? 'asc/desc'を取ることができるのはそれが最小限の要素だからです。 – Owen