Java Util SQL Parser выдает исключение для правильного оператора
Мое утверждение
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 ответ
Решение
Если вы углубитесь в грамматику JSqlParsers, то обнаружите, что условие SQLC - это только одно из следующих условий:
- в
- между
- нулевой
- существует
- как выражение.
Вы указали так называемое 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. Ваша версия кажется немного старше, потому что параметр конструктора парсера теперь является Провайдером.