SQL 格式化

格式化或压缩 SQL,正确识别字符串与注释;关键字大小写可选(默认保留原样),子查询按括号层级缩进。

格式化结果
压缩结果(单行,注释已删除)

本工具在你的浏览器内运行,输入的内容与文件不会上传到任何服务器。

常见问题

格式化会改变我的 SQL 语义吗?
不会。关键在于实现方式:本工具先把 SQL 切成 token,其中字符串('…'、"…"、`…`、[…])与注释(--、#、/* */)都是不可分割的整体,美化时只调整它们的位置、压缩时只整体删除注释 —— 内容一个字符都不会被改写。这正是很多同类工具出问题的地方:用正则 s+ 压缩空白,会把 WHERE note = 'a b' 里的三个空格压成一个,SQL 还能跑,但比较结果已经不对了。
为什么默认不把关键字转成大写?
因为改大小写属于改代码,不属于「格式化」。很多工具默认强制大写且无法关闭,用户复制回去就得到一份与原文风格不同的代码,在 code review 里反而多出一堆无关 diff。这里把选择权交出来:默认保留原样,需要统一风格时再切到全大写或全小写。
它支持哪些数据库方言?
token 化是通用的,不依赖具体方言 —— 因此 MySQL 的反引号、SQL Server 的方括号、标准 SQL 的双引号标识符都能被正确识别。缩进与换行依据的是一张子句关键字表(SELECT / FROM / WHERE / GROUP BY / JOIN 系列等,覆盖标准 SQL 与常见方言),表外的关键字按普通标识符处理、不会强行换行。需要说明的是:本工具做的是排版,不做语法校验,写错的 SQL 不会报错、只会被排版。

相关工具