Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add where condition to sql with JSqlParser?

I want to add where condition to sql with JSqlParser, for example:

Before:

select * from test_table where a=1 group by c

After:

select * from test_table where a=1 and b=2 group by c

However, I cannot find any example codes.

like image 562
Zhang Junlong Avatar asked Sep 18 '25 19:09

Zhang Junlong


1 Answers

One solution would be:

String sql = "select * from test_table where a=1 group by c";
Select select = (Select) CCJSqlParserUtil.parse(sql);
Expression where = CCJSqlParserUtil.parseCondExpression("a=1 and b=2");
((PlainSelect) select.getSelectBody()).setWhere(where);
System.out.println(select.toString());

First, you have to parse the existing SQL. Using this PlainSelect cast you are getting access to the where clause of your statement, at least at the object it holds it.

The where expression is generated using the convenience method CCJSqlParserUtil.parseCondExpression.

The output of those statements is:

SELECT * FROM test_table WHERE a = 1 AND b = 2 GROUP BY c
like image 146
wumpz Avatar answered Sep 21 '25 10:09

wumpz