将sql查询的where子句转换为等效的过滤器程序

时间:2016-04-21 11:34:18

标签: algorithm data-structures expression-trees boolean-expression tree-traversal

问题描述

对于MYSQL查询,如:

 SELECT * from <<table>> where (a=1 and b<4) and c is between 1 and 4 

我需要在JAVA中开发一个where子句过滤器,这样where子句过滤器的工作就是以编程方式完成而不是使用DB;

(a=1 or b<4) and c is between 1 and 4 

问题包括两种操作:

  1. 不等运算符,操作数和值
  2. Conjuncts(AND,OR,Between)
  3. 以下是我的方法:

    1. 将单独的中缀符号设为前缀格式: inequality_operator(操作数,值)。

      =(a,1)
      >(b,4)
      between(c,(1,4))
      
    2. 将带括号的不等式与conjuncts连接起来。大括号是合并操作的指标。

      AND {=(a,1),>(b,4)}
      between(c,(1,4))
      
    3. 并最终确定括号优先级之后的最终连接。

       AND{AND {=(a,1),>(b,4)} , between(c,(1,4)) }
      

      问题

      对于基于括号优先级的不等式分组,我需要帮助,以便使用哪个数据结构来实现此目的,以便为表达式树适当地设计节点。

0 个答案:

没有答案