gpt4 book ai didi

java - 删除 JSqlParser 中的表达式

转载 作者:行者123 更新时间:2023-12-02 12:12:07 32 4
gpt4 key购买 nike

我正在尝试找到从使用 JSQLParser 解析的查询中删除表达式(例如条件)的最简单方法。

假设我有以下查询(这里没有真正的逻辑):

select a,b,c from table where a > 1 and c > 4 and a = b

假设,我想删除其中一个条件,例如“a = b”,最好的方法是什么?

我使用以下代码来追踪“EqualTo”表达式中具有两列的条件,但现在我手头有表达式对象,我不确定将其从 where 中删除的最佳方法是什么条款。

subselect.getWhere().accept(new ExpressionVisitorAdapter() {
@Override
public void visit(EqualsTo expr) {
if (expr.getLeftExpression() instanceof Column && expr.getRightExpression() instanceof Column &&
((Column)expr.getLeftExpression()).getTable() != ((Column)expr.getRightExpression()).getTable()) {
// Now what?
}
}
});

最佳答案

最简单的可能性是,如果您已经实现了访问者将此表达式设置为

1 = 1

这可以通过类似的事情来完成

expr.setLeftExpression(new LongValue(1));
expr.setRightExpression(new LongValue(1));

如果你想从你的sql中完全删除它,你必须实现某种堆栈来跟踪你的sql中以前访问过的部分,以获取你要从中删除表达式的那些对象。但如果考虑到括号、计算等,这并不是微不足道的。

恕我直言,保持简单并尝试简单的替换。

关于java - 删除 JSqlParser 中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46467016/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com