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 table WHERE CONTAINS(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 回答