使用JSQLParser从项目中获取多个

时间:2014-02-18 16:46:01

标签: java mysql sql jsqlparser

我正在编写SQL查询评估程序,我正在使用JSQLParser来解析查询。现在似乎(并且也通过此链接http://sourceforge.net/p/jsqlparser/feature-requests/2/建议)JSQLParser不允许SQL的FROM子句中的多个项目。

当我这样做时

statement.getFromItem().toString();

where语句是PlainSelect类型的对象,我只从FROM子句中获取第一个表名。 FromItem类中没有toArray()方法。

有没有解决方法呢?

1 个答案:

答案 0 :(得分:2)

实际上JSQLParser能够解析你的语句或你提到的例子:

select t1.a, t2.b from t1, t2 where t1.id = t2.id

第二个表格不会被识别为第二个 FromItem ,而是简单加入。要获得表格,您还需要查看 getJoins

这是我的测试代码,它是使用github https://github.com/JSQLParser/JSqlParser上的JSqlParser的分支编写的。

public class MultiFromItems {
    public static void main(String args[]) throws JSQLParserException {
        String sql = "select t1.a, t2.b from t1, t2 where t1.id = t2.id";
        Statement parse = CCJSqlParserUtil.parse(sql);
        Select select = (Select)parse;
        PlainSelect ps = (PlainSelect)select.getSelectBody();
        System.out.println(ps);
        System.out.println(ps.getFromItem());
        System.out.println(ps.getJoins().get(0));
    }
}