我希望扩展JSQLParser,以便它能够接受oracle的IIF命令。以下stmt生成异常,因为函数使用表达式:
SELECT LNNVL(A > 10, 1, 0) FROM TBL_NAME;
你介意告诉我如何更改jj文件吗?
改变
IIF代之以LNNVL。LNNVL只在其中的条件下有效,但不引发异常。
发布于 2016-05-26 05:46:26
在github使用JSqlParser将开始生产
function()在这里,您必须修改jjt - File,因为这个版本的JSqlParser做了某种ASTNode构建。jj -文件是派生出来的.
目前有一个SimpleExpressionList被接受
"(" [ [<K_DISTINCT> { retval.setDistinct(true); } | <K_ALL> { retval.setAllColumns(true); }] (expressionList=SimpleExpressionList() | "*" { retval.setAllColumns(true); }) ] ")"这只接受表达式,而不接受任何条件。您可以制作SimpleExpressionList的变体(可能是SimpleExpressionOrConditionList)和
ExpressionList SimpleExpressionConditionList():
{
ExpressionList retval = new ExpressionList();
List<Expression> expressions = new ArrayList<Expression>();
Expression expr = null;
}
{
( expr=SimpleExpression() | expr=Condition() )
{ expressions.add(expr); } ("," ( expr=SimpleExpression() | expr=Condition() ) { expressions.add(expr); })*
{
retval.setExpressions(expressions);
return retval;
}
},这不是测试!
但这应该是有可能的。欢迎拉请求:https://github.com/JSQLParser/JSqlParser
https://stackoverflow.com/questions/37417905
复制相似问题