oLoveTools
SQL 工作台

格式化、检查并读懂任何一条 SQL 查询。

十九种方言、能报出行与列的检查器、语法高亮,以及每条语句的拆解——全部在这个标签页里完成,不向任何地方上传。

关键字
缩进
你的查询
结果

这里不会自动运行。查询准备好后按「格式化」。

快捷键Ctrl+Enter格式化Ctrl+M压缩Ctrl+/注释所选内容Ctrl+Z / Ctrl+Y撤销与重做
检查

还没有载入内容。

这条查询在做什么

只要有一条语句,这里就会给出拆解。

继续查询跟着你走——不用下载,也不用重新上传

十九种方言,不止一种

PostgreSQL、MySQL、MariaDB、SQLite、SQL Server、BigQuery、Snowflake、Redshift、DuckDB、Oracle 等等,各有各的保留字、引号规则和占位符。粘贴查询,方言会自动判断。

问题带着行号

没闭合的引号和括号、没有 WHERE 的 DELETE、没有 ORDER BY 的 LIMIT。每条提示都给出行和列,点一下光标就落到那里。

在主线程之外

格式化在 Web Worker 里进行,5 MB 的导出文件处理时页面也不会卡住。结果旁边显示的时间是真实测得的。

什么都不会离开这个标签页

没有上传,没有账号,也不往服务器跑一趟。生产环境的查询带着表名、ID 和业务逻辑,这些都不会去到任何地方。

如何使用

1

把查询拿进来

粘贴、拖入 .sql、加载示例,或者让另一个工具递过来。拖进来的文件会等着:在你开口之前不会载入,也不会格式化。

2

定好规则

方言、关键字大小写、缩进宽度、AND 和 OR 的位置、表达式多宽才换行。每个选项都会改变下一次格式化的结果。

3

按下格式化

引擎重写查询,检查面板列出值得看一眼的地方,拆解面板显示涉及的语句、表、连接和 CTE。

4

带走它

复制、下载 .sql,或者直接送到套件里的另一个工具:比较两个版本、做成图片、计算哈希。

格式化只是工作的一半

大多数在线 SQL 美化工具只做一件事:加换行。这在查询只是难看时够用,但查询不只是难看而是写错时就不行了——中途没闭合的引号、始终没关上的括号、复制粘贴时弄丢的 WHERE。SQLFlow 在动手之前先把查询读成词元,因此能告诉你问题从哪一行哪一列开始,而不是默默吐出一段被弄坏的结果。

这一遍词元处理同样保护你的数据。粗糙的格式化工具会对整段文本套用正则表达式,于是 '你好 世界' 里的空格被压掉,注释里的逗号还会开出新的一行。在这里,字符串和注释是不可触碰的整体:你写在里面的东西会逐字节原样出来,不管你选的是哪种方言。

而且同一遍处理还顺带搭出了拆解结果,所以你拿到的不只是好看的文本:文件里有哪些语句、每条语句碰到哪些表、有哪些 CTE、有多少连接、还有哪些占位符在等值。这就是「看起来整齐的查询」和「在跑上生产之前你已经看懂的查询」之间的差别。

常见问题

我的查询会被发送到服务器吗?

不会。格式化器以及围绕它的一切都在你的浏览器里运行。没有上传,也没有 API 调用,查询不会离开你的设备。

支持哪些 SQL 方言?

十九种:标准 SQL、PostgreSQL、MySQL、MariaDB、SQLite、SQL Server(T-SQL)、Oracle PL/SQL、BigQuery、Snowflake、Redshift、DuckDB、ClickHouse、Spark、Hive、Trino、Db2、SingleStore、TiDB 和 N1QL。每种都有自己的保留字、引号规则和占位符语法,并且会尽可能从查询本身推断方言。

它会改变我的查询做的事情吗?

不会。格式化只动空白和关键字的大小写。字符串、注释和带引号的名称原样输出,连里面的空格都不变。

检查面板会检查什么?

没闭合的引号、注释和括号;不以 SQL 关键字开头的语句;没有 WHERE 的 DELETE 和 UPDATE;DROP 和 TRUNCATE;SELECT *;用逗号连接却没有条件的表;没有 ORDER BY 的 LIMIT;没有列清单的 INSERT;以及末尾缺失的分号。每一条都会给出行和列。

粘贴查询之后为什么什么都没发生?

这是有意为之:格式化只有在你按下「格式化」或 Ctrl+Enter 时才运行。如果希望它边输入边跑,可以在「更多选项」里打开「边输入边格式化」。

可以一次格式化多条语句吗?

可以。用分号分隔的语句会一起格式化,拆解面板会逐条列出并标明它碰到的表,方便你直接跳过去。

oLoveTools 套件的一部分
oLoveTools

格式化、检查并读懂 SQL——19 种方言,全部在你的浏览器里完成。

一切都在这个标签页里运行

格式化器、词法分析、检查器和拆解都是在你浏览器里跑的 JavaScript,重活放进了 Web Worker,页面因此不会卡。这个页面背后没有任何 API:加载完之后断网,它照样能用。

大家用它来做什么

把 ORM 日志里 400 个字符的一整行变得能读,在提交评审前统一一份迁移脚本的风格,找出弄坏存储过程的那个括号,或者弄清别人发来的查询到底碰了哪些表。

为什么本地处理在这里很重要

生产环境的查询很少是无害的:它带着表名和列名、业务规则、ID,有时还有客户的真实数据。把它粘到一个在服务器上做格式化的站点,等于把这些全交给了第三方。在这里它不会离开标签页,关掉标签页就是全部的善后。

sql 格式化sql 美化在线 sql 格式化sql 校验sql 压缩sql 排版postgresql 格式化mysql 格式化t-sql 格式化bigquery 格式化sql 检查器sql 可读性
© 2026 oLoveTools关于

SQLFlow | 支持 19 种方言的 SQL 格式化与校验工具

在浏览器里格式化、压缩和检查 SQL。十九种方言、语法高亮、能指出行号的检查器和查询拆解。不上传任何内容。

常见问题

我的查询会被发送到服务器吗?

不会。格式化器以及围绕它的一切都在你的浏览器里运行。没有上传,也没有 API 调用,查询不会离开你的设备。

支持哪些 SQL 方言?

十九种:标准 SQL、PostgreSQL、MySQL、MariaDB、SQLite、SQL Server(T-SQL)、Oracle PL/SQL、BigQuery、Snowflake、Redshift、DuckDB、ClickHouse、Spark、Hive、Trino、Db2、SingleStore、TiDB 和 N1QL。每种都有自己的保留字、引号规则和占位符语法,并且会尽可能从查询本身推断方言。

它会改变我的查询做的事情吗?

不会。格式化只动空白和关键字的大小写。字符串、注释和带引号的名称原样输出,连里面的空格都不变。

检查面板会检查什么?

没闭合的引号、注释和括号;不以 SQL 关键字开头的语句;没有 WHERE 的 DELETE 和 UPDATE;DROP 和 TRUNCATE;SELECT *;用逗号连接却没有条件的表;没有 ORDER BY 的 LIMIT;没有列清单的 INSERT;以及末尾缺失的分号。每一条都会给出行和列。

粘贴查询之后为什么什么都没发生?

这是有意为之:格式化只有在你按下「格式化」或 Ctrl+Enter 时才运行。如果希望它边输入边跑,可以在「更多选项」里打开「边输入边格式化」。

可以一次格式化多条语句吗?

可以。用分号分隔的语句会一起格式化,拆解面板会逐条列出并标明它碰到的表,方便你直接跳过去。

Keywords

sql 格式化, sql 美化, 在线 sql 格式化, sql 校验, sql 压缩, sql 排版, postgresql 格式化, mysql 格式化, t-sql 格式化, bigquery 格式化, sql 检查器, sql 可读性