SQL Formatter
One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run · Ctrl+Shift+C Copy · Esc Clear
Understand SQL Formatter
这个格式化工具把每个 SQL 子句放到单独一行,把保留字转为大写,并在 WHERE 之下缩进各个条件。
How it works
它作用于文本而不是解析查询:空白被折叠,固定列表中的关键字被转为大写,在每个主要子句之前插入换行——SELECT、FROM、JOIN 系列、WHERE、GROUP BY、ORDER BY 等等——而以 AND、OR 或 NOT 开头的行会缩进到它们所属的子句之下。较长的关键字先于较短的匹配,因此 LEFT JOIN 会保持完整,不会在 JOIN 处被拆断。
When to use it
- 阅读从 ORM 日志或慢查询日志中取出的长查询。
- 为拉取请求格式化查询,好让评审者跟得上其中的连接关系。
- 在动手修改继承来的查询之前,先让其中的连接顺序变得一目了然。
- 统一多人协作文件中关键字的大小写风格。
Watch out for
- 字符串字面量不受保护。由于这是一次纯文本处理,引号内的关键字同样会被改写:WHERE note = 'select one' 回来时其中的 SELECT 被大写,而且字符串内部还多了一个换行。任何含引号文本的查询,运行之前请先读一遍输出。
- 格式化不是校验。带语法错误的查询照样能被整洁地格式化,而在数据库解析它的那一刻依然会失败。
- 方言语法会原样通过,但不会被理解。PostgreSQL 的 $ 函数体、存储过程块以及厂商专有语句,可能被拆成多行,虽仍能运行,读起来却很别扭。
Not the right tool for: 判断一条查询是否正确或是否高效。请对真实数据库运行 EXPLAIN——格式化工具对你的表一无所知。
Frequently Asked Questions
如何格式化 SQL 查询?
把 SQL 粘进输入框并点击格式化。工具会把保留关键字(SELECT、FROM、WHERE、JOIN)转为大写,为嵌套查询添加恰当的缩进,并把每个主要子句放到单独一行。支持 MySQL、PostgreSQL、SQLite 和 SQL Server 方言。
它支持存储过程和 CTE 吗?
支持——格式化工具能处理多语句 SQL,包括 CTE(WITH ... AS)、存储过程、触发器和子查询。每个子句都会独占一行,嵌套的 SELECT 语句缩进保持一致。
可以压缩 SQL 吗?
可以——切换到压缩模式,即可把查询折叠成空白最少的一行。这适合把 SQL 嵌进配置文件、减少日志噪声,或让查询塞进应用代码中的内联字符串。
How to Use SQL Formatter
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.