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

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.