You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@Test
public void test4() throws ParseException, JSQLParserException {
String orginalSql = "SELECT * FROM PMS_ROLE_SCALE where ROLE_ID= ? /*if*/\n" +
" and code_id= ? /*if*/ \n" +
"/*if*/\n" +
" and SCALE_FLAG=?/*if*/\n" +
"/*if*/\n" +
" and PMS_TYPE=?/*if*/";
Statement statement = CCJSqlParserUtil.parse(orginalSql);
String parsedSql = statement.toString();
log.info("==> JsqlParser SQL: {}", parsedSql);
}
I want to keep the comments
I use these comments as placeholders. Since I want to replace these comments after Jsqlparser finishes parsing, I hope that they can still be retained after parsing.
Is there any way to use it? Or is there a better solution?
Also,JSqlParser is a near-perfect work. I often use it in my projects and I love it very much.
There is no direct way to access such SQL comments because they do not have clear position in the AST. Example:
SELECT/*comment 1*//*comment 2*/ column1 from dual;
It's impossible to decide if those comments are properties of the Nodes SELECT or column1 and so the parsed AST can't be easily rewritten into a text.
However, there are certain work arounds:
your scan your statements first for comments and determine the "non-whitespace position" of each comment.
Given, that parsing/de-parsing does not change the content of the SQL, you can insert your comment later again at this "non-whitespace" position.
I have done exactly this for JSQLFormatter, look-up the Comment-Map implementation.
Activity
RudolphLiu commentedon Jun 11, 2024
I noticed the issue http://github.com/JSQLParser/JSqlParser/issues/1776 , but still can't think of a good solution
manticore-projects commentedon Jun 11, 2024
Greetings!
There is no direct way to access such SQL comments because they do not have clear position in the AST. Example:
It's impossible to decide if those comments are properties of the Nodes
SELECTorcolumn1and so the parsed AST can't be easily rewritten into a text.However, there are certain work arounds:
your scan your statements first for comments and determine the "non-whitespace position" of each comment.
Given, that parsing/de-parsing does not change the content of the SQL, you can insert your comment later again at this "non-whitespace" position.
I have done exactly this for JSQLFormatter, look-up the Comment-Map implementation.
you can access the Special AST Nodes and re-insert into the AST
This has been done here.