提问人:Xin Zhang 提问时间:11/17/2023 更新时间:11/17/2023 访问量:15
如何从非ansi连接语句的JSQLParser结果中提取连接条件?
How to extract join conditions from the JSQLParser result of an non-ansi join statement?
问:
我正在使用 JSQLParser 来解析一个 SQL 语句,该语句在传递给 JSQLParser 时是未知的实用程序。 如果查询包含非 ANSI 联接,则联接条件位于 WhereExpression 中,而不是 Join 中的 onExpressions。
例如,非 ANSI 联接语句的解析结果为SELECT * FROM a, b WHERE a.id = b.id
SQL Text
└─Statements: net.sf.jsqlparser.statement.select.Select
└─selectBody: net.sf.jsqlparser.statement.select.PlainSelect
├─ArrayList: [*]
│ └─AllColumns: *
├─Table: a
├─ArrayList: [b]
│ └─joins: net.sf.jsqlparser.statement.select.Join
│ └─Table: b
└─where: net.sf.jsqlparser.expression.operators.relational.EqualsTo
├─Column: a.id
└─Column: b.id
而 的解析结果是SELECT * FROM a JOIN b ON a.id = b.id
SQL Text
└─Statements: net.sf.jsqlparser.statement.select.Select
└─selectBody: net.sf.jsqlparser.statement.select.PlainSelect
├─ArrayList: [*]
│ └─AllColumns: *
├─Table: a
└─ArrayList: [JOIN b ON a.id = b.id]
└─joins: net.sf.jsqlparser.statement.select.Join
├─Table: b
└─LinkedList: [a.id = b.id]
└─onExpressions: net.sf.jsqlparser.expression.operators.relational.EqualsTo
├─Column: a.id
└─Column: b.id
由于我的程序需要进一步的工作来处理连接条件,因此我需要从 whereExpression 中提取它们,如果语句中有非 ANSI 联接,则将它们添加回 onExpression。
是否有任何方法可以应用任何方法或规则来实现提取?
答: 暂无答案
评论