🌐 ZH

🗄️ SQL 格式化工具

将通用SQL按子句换行并缩进。支持的SQL可以压缩为一行;压缩时会删除注释。关键字是否大写可自行选择。

示例

此工具会格式化SQL,但不会验证SQL、确认数据库特定的兼容性或核实查询含义。

SQL仅在此设备上处理。

指南

了解更多

01

1. 为什么要格式化 SQL

一行书写或由 ORM 生成的 SQL,随着连接(JOIN)增多会越来越难以阅读。按子句(SELECT、FROM、WHERE、JOIN、GROUP BY、ORDER BY 等)换行并对齐缩进后,能一眼看出哪些表以什么条件连接、WHERE 条件是什么,从而加快代码审查和调试速度。

02

2. 本工具的排版规则

格式化器会在SELECT、FROM、WHERE和JOIN等子句前换行,并将AND和OR缩进一级,以区分不同条件。用逗号分隔的列表会分别放在单独的行上,括号内的内容会再增加一级缩进。它是基于令牌的格式化器,不是SQL验证器,也不是能解析所有方言的解析器。对于命名参数或厂商专用字面量等无法安全保留的语法,它会显示错误。如果出现这种情况,请不要修改查询,而是使用支持该语法的SQL工具处理原始查询。

03

3. Minify 及使用场景

压缩(minify)会去除注释,并消除多余的空白和换行,合并为一行。适用于将查询记录到日志、缩小存储过程/迁移脚本体积,或需要一行文本粘贴到其他工具时。字符串字面量(引号包裹的值)内的内容会原样保留,不会破坏数据本身。

常见问题

支持所有 SQL 方言(MySQL、PostgreSQL、Oracle 等)吗?
不是。这个工具不是SQL验证器,也不是针对各个方言的解析器。它可以整理常见的SQL令牌和JOIN形式,但对于命名参数、厂商专用字面量等无法安全保留的语法,不会继续处理,而是显示错误。遇到这种情况,请不要修改查询,在数据库或支持该语法的SQL工具中使用原始查询。
字符串中的 SQL 关键字也会被转成大写吗?
不会。用引号('...'、"..."、`...`)包裹的字符串字面量在词法分析阶段会被单独识别,不受大小写转换或换行规则影响。
输入的查询会发送到服务器吗?
不会。格式化和压缩都完全在浏览器内处理,不会发送到任何服务器。
可以更改缩进宽度吗?
可以,在缩进下拉菜单中可选择 2 个或 4 个空格。