Hi. Could you please look at the following sql.
"select (case when a > 0 then b + a else 0 end) p from mytable"
It throw a parse exception. How can I fixed it?
Exception in thread "main" net.sf.jsqlparser.JSQLParserException at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:40) at net.sf.jsqlparser.TestMain.main(TestMain.java:149) Caused by: net.sf.jsqlparser.parser.ParseException: Encountered "case when a > 0 then b +" at line 1, column 9. Was expecting one of: "(" ... "NULL" ... "CASE" "WHEN" "NULL" ... "CASE" "WHEN" "CASE" ... "CASE" "WHEN" "?" ... "CASE" "WHEN" "+" ... "CASE" "WHEN" "-" ... "CASE" "WHEN" "{fn" ... "CASE" "WHEN" <S_IDENTIFIER> "." ... "CASE" "WHEN" <S_IDENTIFIER> "(" ... "CASE" "WHEN" <S_DOUBLE> ... "CASE" "WHEN" <S_INTEGER> ... "CASE" "WHEN" <S_IDENTIFIER> "*" ... "CASE" "WHEN" <S_IDENTIFIER> "/" ... "CASE" "WHEN" <S_IDENTIFIER> "+" ... "CASE" "WHEN" <S_IDENTIFIER> "-" ... "CASE" "WHEN" <S_IDENTIFIER> "NOT" ... "CASE" "WHEN" <S_IDENTIFIER> "IN" ... "CASE" "WHEN" <S_IDENTIFIER> "BETWEEN" ... "CASE" "WHEN" <S_IDENTIFIER> "IS" ... "CASE" "WHEN" "NOT" ... "CASE" "WHEN" "EXISTS" ... "CASE" "WHEN" <S_IDENTIFIER> "LIKE" ... "CASE" "WHEN" "ALL" ... "CASE" "WHEN" "ANY" ... "CASE" "WHEN" "SOME" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "ALL" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "ANY" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "SOME" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "NULL" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "CASE" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "?" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "+" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "-" ... "CASE" "WHEN" <S_IDENTIFIER> ">" "{fn" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_QUOTED_IDENTIFIER> ... "CASE" "WHEN" <S_IDENTIFIER> ">" "REPLACE" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_DOUBLE> ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "*" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "/" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "+" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "-" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "AND" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "OR" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "NULL" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "CASE" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "?" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "+" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "-" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "{fn" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "." ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "(" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_DOUBLE> ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_INTEGER> ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "WHEN" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "ELSE" ... "CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "END" ... "?" ... "+" ... "-" ... "{fn" ... <S_IDENTIFIER> ... <S_QUOTED_IDENTIFIER> ... "REPLACE" ... <S_DOUBLE> ... <S_INTEGER> ... <S_CHAR_LITERAL> ... "{d" ... "{t" ... "{ts" ... "SELECT" ...
Please try 0.5.0.
Log in to post a comment.
Hi.
Could you please look at the following sql.
"select (case when a > 0 then b + a else 0 end) p from mytable"
It throw a parse exception. How can I fixed it?
Exception in thread "main" net.sf.jsqlparser.JSQLParserException
at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:40)
at net.sf.jsqlparser.TestMain.main(TestMain.java:149)
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered "case when a > 0 then b +" at line 1, column 9.
Was expecting one of:
"(" ...
"NULL" ...
"CASE" "WHEN" "NULL" ...
"CASE" "WHEN" "CASE" ...
"CASE" "WHEN" "?" ...
"CASE" "WHEN" "+" ...
"CASE" "WHEN" "-" ...
"CASE" "WHEN" "{fn" ...
"CASE" "WHEN" <S_IDENTIFIER> "." ...
"CASE" "WHEN" <S_IDENTIFIER> "(" ...
"CASE" "WHEN" <S_DOUBLE> ...
"CASE" "WHEN" <S_INTEGER> ...
"CASE" "WHEN" <S_IDENTIFIER> "*" ...
"CASE" "WHEN" <S_IDENTIFIER> "/" ...
"CASE" "WHEN" <S_IDENTIFIER> "+" ...
"CASE" "WHEN" <S_IDENTIFIER> "-" ...
"CASE" "WHEN" <S_IDENTIFIER> "NOT" ...
"CASE" "WHEN" <S_IDENTIFIER> "IN" ...
"CASE" "WHEN" <S_IDENTIFIER> "BETWEEN" ...
"CASE" "WHEN" <S_IDENTIFIER> "IS" ...
"CASE" "WHEN" "NOT" ...
"CASE" "WHEN" "EXISTS" ...
"CASE" "WHEN" <S_IDENTIFIER> "LIKE" ...
"CASE" "WHEN" "ALL" ...
"CASE" "WHEN" "ANY" ...
"CASE" "WHEN" "SOME" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "ALL" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "ANY" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "SOME" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "NULL" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "CASE" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "?" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "+" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "-" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "{fn" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_IDENTIFIER> ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_QUOTED_IDENTIFIER> ...
"CASE" "WHEN" <S_IDENTIFIER> ">" "REPLACE" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_DOUBLE> ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "*" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "/" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "+" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "-" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "AND" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "OR" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "NULL" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "CASE" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "?" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "+" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "-" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" "{fn" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "." ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "(" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_DOUBLE> ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_INTEGER> ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "WHEN" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "ELSE" ...
"CASE" "WHEN" <S_IDENTIFIER> ">" <S_INTEGER> "THEN" <S_IDENTIFIER> "END" ...
"?" ...
"+" ...
"-" ...
"{fn" ...
<S_IDENTIFIER> ...
<S_QUOTED_IDENTIFIER> ...
"REPLACE" ...
<S_DOUBLE> ...
<S_INTEGER> ...
<S_CHAR_LITERAL> ...
"{d" ...
"{t" ...
"{ts" ...
"SELECT" ...
Please try 0.5.0.