SQL 格式化

把从日志或 ORM 里拿到的、挤成一行的查询粘进来,它又会变回一份能读的查询——SELECT、FROM、WHERE 和每个 JOIN 各据一行。

代码不会离开此页面:格式化在你的浏览器中完成。

使用方法

  1. 把查询粘贴到第一个输入框。
  2. 决定关键字是否大写,以及每个字段是否单独一行。
  3. 复制结果。

实用说明

为什么要保护字面量

查询里可能有一个值写作 'order by name',也可能有一条提到 SELECT 的注释。用查找替换来干活的格式化器会在那里断行,或者把你数据中的某个词改成大写。这里在格式化之前先把字符串字面量和注释取出来,处理完再原样放回。

断行是为了什么

读一份查询就是要快速找到三件事:它碰了哪些表、这些表怎么连接、按什么条件过滤。把每个子句放在自己的行上,一眼就能回答这三个问题——这也是代码评审中约定俗成的排版,远早于有人真正执行这条查询。

常见问题

支持哪种方言?

PostgreSQL、MySQL、SQL Server 和 SQLite 共有的那些子句。方言特有的语法不会被重排,但也不会被破坏——不认识的词原样通过。

它会检查查询有没有错吗?

不会。它只排版,不解析。有问题的查询依旧有问题,只是更好读了。

查询会发送到服务器吗?

不会。一切都在你的浏览器里进行,这一点很要紧——查询里带着表名,往往还带着生产环境的数据。

为什么我的关键字没有变成大写?

打开「关键字大写」。这是偏好而不是规矩:很多团队全篇用小写写 SQL。

相关工具