0

我的说法是

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;
4

1 回答 1

1

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

  • 之间
  • 一片空白
  • 存在
  • 喜欢表达。

您指定了一个所谓的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

于 2018-09-10T09:19:45.863 回答