最近 review 同事提交的代码,看到一段 MyBatis 里的 SQL 写成了一整行:

SELECT t.id, t.user_id, t.name, t.color, t.sort_order, t.status, t.create_time, t.update_time FROM user_note_tag t INNER JOIN user_note_tag_rel r ON r.tag_id = t.id WHERE r.note_id = #{noteId} AND t.status = 1 ORDER BY t.sort_order ASC, t.create_time DESC

虽然能跑,但排查问题的时候看着头疼。我想把它格式化一下再看逻辑,手头又没有趁手的 IDE 插件,就顺手找了个在线 SQL 格式化工具。

几种格式化方式对比

平时整理 SQL,我一般考虑三种方案:

1. 手动格式化

优点:完全可控,想怎么排怎么排。
缺点:慢,容易出错,特别是字段多、JOIN 多的时候,手动加换行和缩进很烦。

2. IDE 插件

优点:集成在开发环境里,顺手。
缺点:不是每个环境都有配置好的插件;临时看一段别人发来的 SQL 时,可能不想为了格式化专门打开 IDE。

3. 在线工具

优点:零配置,打开浏览器就能用;支持复制粘贴,适合临时处理。
缺点:需要把 SQL 贴到网页上,敏感 SQL 不建议用。

这次我用的就是第三种,工具派上的 SQL 格式化:

screenshot_01.png

实测效果

把上面那段单行 SQL 贴进去,工具自动做了格式化:

screenshot_02.png

格式化后结构清晰多了:

SELECT
  t.id,
  t.user_id,
  t.name,
  t.color,
  t.sort_order,
  t.status,
  t.create_time,
  t.update_time
FROM user_note_tag t
INNER JOIN user_note_tag_rel r ON r.tag_id = t.id
WHERE r.note_id = #{noteId}
  AND t.status = 1
ORDER BY t.sort_order ASC, t.create_time DESC

SELECT、FROM、JOIN、WHERE、ORDER BY 各占一行,字段和条件都有缩进。这样再看逻辑,一眼就能找到 JOIN 条件和过滤条件。

几个使用场景

我觉得在线 SQL 格式化在以下几种情况特别省事:

  • 看别人提交的一行 SQL,想快速理解结构;
  • 在服务器上查日志,复制出来的 SQL 没有换行;
  • 写文档或者发技术讨论帖,需要把 SQL 排得整齐一点;
  • 临时没有 IDE,又需要格式化 SQL。

注意事项

在线工具虽然方便,但有几个点要注意:

  1. 敏感 SQL 不要上传:涉及用户数据、密码、内部业务逻辑的 SQL,尽量用本地工具处理。
  2. 格式化后检查语义:大部分格式化工具不会改变 SQL 语义,但复杂 SQL 格式化后建议跑一下确认。
  3. 参数占位符保留:这次测试的 #{noteId} 被完整保留,没有异常转换。

总结

SQL 格式化不是难事,但选择合适的工具能省不少时间。对于日常开发中的普通 SQL,在线格式化工具是一个轻量且有效的选择。我这次用的是工具派上的 SQL 格式化,效果够用,操作也简单。

相关工具:https://gjupai.com/


工具派
6 声望75 粉丝

独立开发者,工具派(gjupai.com)站长,持续分享在线工具开发实践与办公效率技巧,涉及 PDF 处理、图片压缩、格式转换等方向。