JSqlParser parses an SQL statement and translate it into a hierarchy of Java classes. The generated hierarchy can be navigated using the Visitor Pattern
select *
from dev_device_tags t
where (
case true
when t.key = '1' then t.value = '2'
when t.key = '2' then t.value = '3'
end
)
Parsing this SQL using JSqlParser with this statements
CCJSqlParserUtil.parse(sql)
Exception
net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "case" "CASE"
at line 4, column 11.
Was expecting one of:
"!"
"("
"NOT"
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:22439)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:22286)
at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:7535)
at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:7475)
at net.sf.jsqlparser.parser.CCJSqlParser.AndExpression(CCJSqlParser.java:7528)
at net.sf.jsqlparser.parser.CCJSqlParser.OrExpression(CCJSqlParser.java:7475)
at net.sf.jsqlparser.parser.CCJSqlParser.Expression(CCJSqlParser.java:7446)
at net.sf.jsqlparser.parser.CCJSqlParser.WhereClause(CCJSqlParser.java:6425)
at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:3794)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:3973)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3649)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:3642)
at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:124)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:75)
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:49)
... 67 more
**Expected behavior**
A clear and concise description of what you expected to happen.
**System**
- Database postgresql
- Java 8
- JSqlParser 3.1
Describe the bug can not parse case expression
To Reproduce Steps to reproduce the behavior:
Was expecting one of: