Java Util SQL Parser为正确的语句引发异常

时间:2018-09-07 05:16:56

标签: java jsqlparser

我的声明是

new_call.cdctype=goal.cdctype

当我对此调用方法CCJSqlParser.SQLCondition()时,出现异常提示

Encountered " "=" "= "" at line 1, column 17.
Was expecting one of:
    "NOT" ...
    "LIKE" ...
    "ILIKE" ...
    "NOT" ...
    "NOT" ...

对为什么会这样的任何见解? 我正在检查联接条件,我认为这是联接条件的合适表达。

代码:

String sql = "new_call.cdctype=goal.cdctype";
CCJSqlParser parser = new CCJSqlParser(new StringReader(sql));
    String errorMsg=null;
    try {
        parser.SQLCondition();
    } catch (ParseException e) {
        errorMsg=e.getMessage();
    }
    return errorMsg;

1 个答案:

答案 0 :(得分:1)

如果深入研究 JSqlParsers 语法,您会发现 SQLCondition 只是以下一项:

  • 之间
  • isnull
  • 存在
  • 喜欢 表达。

您指定了一个所谓的 RegularCondition

这里有两种解析您的条件的方法:

//Shortcut
Expression parseCondExpression = CCJSqlParserUtil.parseCondExpression("new_call.cdctype=goal.cdctype");
System.out.println(parseCondExpression);

//from issue
String sql = "new_call.cdctype=goal.cdctype";
CCJSqlParser parser = new CCJSqlParser(new StringProvider(sql));
try {
    parser.RegularCondition();
} catch (ParseException e) {
    e.printStackTrace();
}

通过我使用JSqlParser V1.2的方式。您的版本似乎有点老,因为解析器的构造函数参数现在是 Provider