小编cod*_*ing的帖子

使用 JSqlParser 完全解析 where 子句

我想使用 JSqlParser 完整、简洁地解析 SQL where 子句。很容易将其解析为单独的条件语句,如下所示

String whereClause = "a=3 AND b=4 AND c=5";
Expression expr = CCJSqlParserUtil.parseCondExpression(whereClause);
expr.accept(new ExpressionVisitorAdapter() {

    @Override
    public void visit(AndExpression expr) {
        if (expr.getLeftExpression() instanceof AndExpression) {
            expr.getLeftExpression().accept(this);
        } else if ((expr.getLeftExpression() instanceof EqualsTo)){
            System.out.println(expr.getLeftExpression());
        }
        System.out.println(expr.getRightExpression());
    }
 });
Run Code Online (Sandbox Code Playgroud)

这将产生输出:

a=3
b=4
c=5
Run Code Online (Sandbox Code Playgroud)

我想要的是获取每个单独表达式的左侧、运算符和右侧,以便我可以将值放入一些现有的过滤器对象中。

我知道您可以覆盖每种类型的运算符的访问函数,如下所示:

expr.accept(new ExpressionVisitorAdapter() {

@Override
public void visit(AndExpression expr) {
    if (expr.getLeftExpression() instanceof AndExpression) {
        expr.getLeftExpression().accept(this);
    } else if ((expr.getLeftExpression() instanceof EqualsTo)){
        expr.getLeftExpression().accept(this);
        System.out.println(expr.getLeftExpression());
    }
    expr.getRightExpression().accept(this);
    System.out.println(expr.getRightExpression());
}
@Override
public void …
Run Code Online (Sandbox Code Playgroud)

java sql jsqlparser

4
推荐指数
1
解决办法
6231
查看次数

标签 统计

java ×1

jsqlparser ×1

sql ×1