01
1. 为什么要格式化 SQL
一行书写或由 ORM 生成的 SQL,随着连接(JOIN)增多会越来越难以阅读。按子句(SELECT、FROM、WHERE、JOIN、GROUP BY、ORDER BY 等)换行并对齐缩进后,能一眼看出哪些表以什么条件连接、WHERE 条件是什么,从而加快代码审查和调试速度。
按子句(clause)对 SQL 查询换行并对齐缩进,提升可读性;也可以反向压缩(minify)为一行,便于存储或日志传输。关键字大写转换为可选项。
一行书写或由 ORM 生成的 SQL,随着连接(JOIN)增多会越来越难以阅读。按子句(SELECT、FROM、WHERE、JOIN、GROUP BY、ORDER BY 等)换行并对齐缩进后,能一眼看出哪些表以什么条件连接、WHERE 条件是什么,从而加快代码审查和调试速度。
在 SELECT/FROM/WHERE/JOIN 系列/GROUP BY/ORDER BY/HAVING/LIMIT 等主要子句前换行,AND/OR 缩进一级以区分条件。逗号分隔的列列表会各自换行对齐,括号内内容(如子查询)会再增加一级缩进。本工具是基于词法(token)的排版器,而非完整的 SQL 解析器,对于非常复杂的嵌套子查询或特定厂商语法,建议查看结果后手动微调。
压缩(minify)会去除注释,并消除多余的空白和换行,合并为一行。适用于将查询记录到日志、缩小存储过程/迁移脚本体积,或需要一行文本粘贴到其他工具时。字符串字面量(引号包裹的值)内的内容会原样保留,不会破坏数据本身。