开发者社区> 问答> 正文

格式化MySQL无法保留注释

测试代码:

@Test public void test() {

String sqlWithLeadingComment = "/*0abcde*/select max(id) from base_request_log";

printFormatted(sqlWithLeadingComment);


String sqlWithEndingComment = "select max(id) from base_request_log/*0abcde*/";

printFormatted(sqlWithEndingComment);


String sqlWithIntermediateComment = "select max(id) from base_request_log  /* haha */ ignore index (i1) ";

printFormatted(sqlWithIntermediateComment);

}

private void printFormatted(String sql) { System.out.println("======"); // System.out.println(SQLUtils.formatMySql(sql)); System.out.println(SQLUtils.formatMySql(sql)); }

输出:

====== SELECT MAX(id) FROM base_request_log

SELECT MAX(id) FROM base_request_log

SELECT MAX(id) FROM base_request_log IGNORE INDEX (i1)

印象中旧版本的格式化实现,不会吞掉注释。

能否设置一个开关到FormatOption里面:是否保留注释 ?

原提问者GitHub用户ddzhj

展开
收起
山海行 2023-07-05 21:01:49 84 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    MySQL的格式化工具在处理SQL语句时默认会去除注释,因此格式化后的SQL语句不包含原始SQL语句中的注释。如果您希望保留注释,可以尝试使用其他第三方的SQL格式化工具,或者使用MySQL自带的--skip-comments选项。

    2023-07-30 13:02:26
    赞同 展开评论 打赏
  • ODPS是支持保留注释的,并且做得比较完善。mysql部分支持了,只支持你所说的第一个场景。请使用新版本 https://github.com/alibaba/druid/releases/tag/1.0.30

    原回答者GitHub用户wenshao

    2023-07-06 11:53:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像