SQL 格式化

把一整面墙的 SQL 变成读得懂的样子 — 需要时再压回一行。

100% 隐私安全 — 完全在您的浏览器中运行。您的数据在本地设备上处理,绝不会发送到互联网。

                        
下载 .sql

它会随着你输入即时格式化,不需要按任何按钮。你的查询只留在这个页面里,字符串和注释内部绝不会被窥探,标识符也完全保持你写的大小写。

关于格式化 SQL

SQL 往往以一整行巨大的文本出现。来自 ORM 的日志,来自一份缺陷报告,来自某人的剪贴板。它跑得好好的,却完全没法读,而你要找的那一小段,就藏在中间某处。

粘贴进来,它就排好版回来了 — 每个子句一行,列在 SELECT 下缩进,JOIN 和它的 ON 条件对齐排列,让查询的结构一眼可见。

使用方法

  • 把 SQL 粘贴到左边的框里 — 带配色的格式化结果会随着你输入出现在右边
  • 需要的话调整缩进关键字大小写逗号位置 — 结果会立刻更新
  • 复制它,或下载成 .sql 文件
  • 切换到压成一行就能把它变回单行;你继续输入时也会保持这个模式

没有需要按下的「格式化」按钮。真正会改变结果的只有格式化压成一行两个按钮,

它们决定你看到的是哪一种。

配色来自对查询的同一次解析

输出的着色,是把排版时用的同一个分词器再跑一遍成品文本得到的 — 关键字青色,字符串

黄色,数字橙色,注释灰色,标点粉色,而你自己的表名和列名保持原色,好让它们从周围的

SQL 中凸显出来。

这不只是好看的问题。因为对查询的同一次解析同时产生了排版和配色,两者绝不可能互相矛盾:

被涂成字符串的部分,正是格式化器当作字符串处理的部分。如果哪里的引号没有配对,颜色就会

一路蔓延,把位置指给你看 — 这通常比用眼睛找快得多。

复制和下载交出的是纯文本,绝不是带颜色的标记。

它特别小心的两件事

多数快速的 SQL 格式化工具靠正则表达式工作,而这两点正是那种做法崩掉的地方。

  • 绝不窥探字符串和注释内部。 一条包含 WHERE note = 'from a, b' 的查询,字符串字面量里就有关键字、逗号和空格。基于正则的格式化会在那里断行,从而改变查询的含义。这个工具先把查询读成词元,所以字面量的内容会原封不动地出来 — 连空格都一样
  • 标识符保持你写的大小写。 只有关键字会被转成大写或小写。在区分大小写的服务器上,userIduserid 是两个不同的列,而一个把它们「整理」掉的格式化工具,是为了好看而弄坏了查询

各种引用写法都能理解:用 '' 转义的 '字符串'"带引号的标识符"、MySQL 的 反引号 、SQL Server 的 [方括号],以及 PostgreSQL 的 $$ 美元引用 $$

可选项

  • 缩进方式 — 4 个空格、2 个空格或制表符
  • 关键字 — 大写、小写,或完全照你写的样子
  • 逗号 — 放在行尾,或者按你们团队的习惯放在行首

压成一行

压缩会把查询收回成单独一行。只有在去掉空格会改变含义或产生新词元的地方才保留空格,所以结果在安全范围内已经尽可能短。

行注释会被丢弃,因为一旦全部挤到一行,-- 像这样的注释就会吞掉后面的一切。块注释则原样保留。

人们用它做什么

  • ORM 日志里的查询变得可读
  • 在放进合并请求或迁移脚本之前整理 SQL
  • 读懂别人写的长查询
  • 缺陷报告里的查询整理成能动手改的样子
  • 配置文件或 shell 命令把查询压到一行
  • 提交前统一一整个 .sql 文件夹的写法风格

值得知道

  • 你的查询只留在这个页面里,不会被送到任何地方。查询里有真实表名和列名时这很要紧
  • 这个工具负责排版,不负责校验语法。有语法错误的查询会被尽力排版,而不是被拒绝
  • 支持各方言的引用写法,但它不会在方言之间改写
  • 非常大的查询也没问题 — 它只是在你自己的机器上做简单的工作
  • 所有浏览器中都能用,手机上也可以

相关工具

我们会定期添加新工具——在 YouTube 上订阅,即可在每个新工具上线时收到通知。

更多工具

查看全部

推荐应用

查看全部