素材阁

SQL 格式化

SQL 美化缩进与压缩成单行,关键字大写,格式化在浏览器本地完成,SQL 语句不会上传。

下载 .sql

使用说明

把压缩成一行的 SQL 按 SELECT、FROM、WHERE、JOIN、GROUP BY、ORDER BY 等关键字换行缩进,关键字可一键大写,字符串字面量与注释原样保留,也能反向压缩成单行;处理全部在浏览器本地完成,SQL 语句不会上传。

  1. 把 SQL 语句粘到上方输入框,整段压缩在一起或已经带换行都可以,点「格式化」输出美化后的结果。
  2. 勾选「关键字大写」后,识别到的关键字会转成大写,表名、字段名与函数名保持你输入的大小写;取消勾选则完全保留原始大小写。
  3. 美化时 SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT、UNION 从行首开始,JOIN、ON、AND、OR 缩进两个空格,GROUP BY 与 ORDER BY 的 BY 留在同一行。
  4. 点「压缩成单行」会去掉换行、多余空格与 -- 行注释,单引号字符串里的空格与分号原样保留,方便贴进只允许单行的配置项。
  5. 点「复制」或「下载 .sql」取走结果;输入为空时会给出提示,字符串引号没闭合时按原样输出,不会抛异常中断页面。

常见问题

字符串里的 -- 会被当成注释删掉吗?
不会。扫描器先识别单引号、双引号与反引号包裹的字符串,再判断注释,因此 '--not-comment' 这样的字面量会被完整保留。压缩模式下只删除真正的 -- 行注释与 /* */ 块注释,字符串内容不变。
为什么括号里的 AND 没有换行?
格式化只在括号外换行,避免把 IN (a AND b) 或子查询拆得七零八落。需要拆开括号内的条件时,可以先把括号去掉重新格式化,或手工调整缩进。
格式化会不会改变 SQL 的语义?
不会。工具只调整空白与关键字大小写,不重排、不增删任何 token,压缩时也只去掉注释与多余空白。不过格式化后仍建议先在测试库执行一次,确认注释移除没有影响依赖注释的提示语句(如 MySQL 的 /*! ... */ 优化器提示会随块注释一起被删掉)。

延伸阅读

相关工具