1

キーワードと演算子のブール検索文字列を解析して、C#コードから実行するSQLクエリにする必要があります。このタスクに必要なのはANTLRのようなものだと思いますが、その方法がわかりません。

これを行う方法についての良いチュートリアルはありますか?または、別のツールが必要ですか?

私が言っていることの例を以下に示します。必要な演算子はANDとORだけです。かっこも使えるようにしたいと思います。

入力式:(青と緑)または黄色

出力:

SELECT * FROM table WHERE(CONTAINS(Description、 "blue")AND CONTAINS(Description、 "green"))OR> CONTAINS(Description、 "yellow"

可能であれば、暗黙的なAND挿入もサポートしたいと思います。したがって、何も指定されていない場合のデフォルトの演算子はANDです。

入力:緑(青または黄色)

出力:SELECT *FROMテーブルWHERECONTAINS(Description、 "green")AND(CONTAINS(Description、 "blue")OR> CONTAINS(Description、 "yellow"))

4

1 に答える 1

0

私はおそらくストレートテキスト処理でこれを行うでしょう。基本的にやりたいことは、元の式を取得し、すべての色を取り出して、それらを CONTAINS 句に置き換えることです。擬似コード:

list of tokens = split input expression into tokens separated by spaces
foreach token in tokens
    if token is not keyword
        text = "CONTAINS(Description, \"" + token + "\")"
    else 
        text = token

    output = output + text
end

キーワードは「(」、「AND」などです。次に、出力を SQL ステートメントに入れるだけです。

< SQL インジェクション攻撃に関する警告をここに挿入 >

于 2009-07-30T21:23:38.127 に答える