跳到正文
SPCXTools

SQL 格式化工具

将冗长杂乱的 SQL 语句转化为整洁、易读、缩进一致的代码。

本地运行——文件不会离开你的设备

正在加载工具…

如何使用SQL 格式化工具

  1. 1将您的 SQL 语句粘贴到输入框中,或点击示例查看演示。
  2. 2选择您的 SQL 方言,以便正确识别特定数据库的语法。
  3. 3选择关键字的显示方式(大写、小写或保持原样)以及缩进格式。
  4. 4复制格式化后的 SQL 语句,或将其下载为 .sql 文件。

让 SQL 语句更易读

从日志中复制、由 ORM 生成或匆忙编写的 SQL 查询语句,往往会变成冗长的一行,不仅难以阅读,更难以调试。这款 SQL 格式化工具能将您的查询语句拆分成清晰的子句 —— SELECT、FROM、JOIN、WHERE、GROUP BY、ORDER BY —— 让每个字段和条件单独占一行,并对子查询和 CASE 表达式进行统一缩进。格式化后的代码更易于代码审查、在版本控制中进行比对,以及与同事分享。

功能特点

  • 支持 12 种 SQL 方言:涵盖标准 SQL 以及 MySQL、PostgreSQL、SQL Server、Oracle、BigQuery 和 Snowflake。
  • 关键字大小写:可转换为大写、小写或保持原样;适用于关键字、数据类型和函数。
  • 缩进设置:支持 2 个空格、4 个空格或 Tab 缩进。
  • 多条语句:支持处理以分号分隔的多条语句。
  • 保留注释:完整保留 -- 单行注释和 /* */ 块注释。
  • 复制或下载:可直接复制结果,或下载为 .sql 文件。
  • 隐私安全:格式化工具完全在您的浏览器本地运行,数据不上传。

格式化前后对比

格式化前的查询语句:

select u.id, u.name, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.status = 'active' group by u.id, u.name order by orders desc;

格式化后:

SELECT
  u.id,
  u.name,
  COUNT(o.id) AS orders
FROM
  users u
  LEFT JOIN orders o ON o.user_id = u.id
WHERE
  u.status = 'active'
GROUP BY
  u.id,
  u.name
ORDER BY
  orders DESC;

SQL 风格建议

  • **每行一个子句。**让每个主要子句独占一行,使查询结构一目了然。
  • **使用有意义的别名。**像 u 和 o 这样的简短别名适用于小型查询,但在长报表中,描述性强的别名会更有帮助。
  • 限定列名:在 JOIN 操作中明确列的来源(使用 orders.user_id 而非 user_id),以避免歧义。
  • 保持格式一致:在整个项目中统一格式,这样代码比对(diff)就能显示真正的修改,而不是空白字符的变化。

相关工具

需要处理查询结果?您可以使用 CSV 转 JSON 转换导出的数据,使用 JSON 格式化工具 美化 API 响应,或者使用 文本对比工具 比较两个版本的查询语句。

常见问题

支持哪些 SQL 方言?
支持 Standard SQL、MySQL、MariaDB、PostgreSQL、SQLite、SQL Server (T-SQL)、Oracle PL/SQL、Google BigQuery、Snowflake、Amazon Redshift、Spark SQL 和 IBM Db2。选择正确的方言对于解析特定数据库的语法非常重要,例如反引号标识符、方括号、美元符号引用的字符串或特殊运算符。
格式化会改变 SQL 的执行逻辑吗?
不会。格式化工具只会更改空格、换行符,以及(如果你选择了的话)关键字、数据类型和函数名的大小写。表名、列名、字符串和注释将保持原样。
为什么会报错?
格式化工具需要理解查询的结构。报错通常意味着有拼写错误、未闭合的引号或括号,或者是使用了其他数据库的语法——可以尝试选择其他方言。像 {{ name }} 这样的模板占位符也可能导致解析器出错。
可以一次格式化多条语句吗?
可以。用分号分隔多条语句,每条语句都会被格式化,并且语句之间会保留一个空行。
我的 SQL 会被发送到服务器吗?
不会。格式化过程完全在你的浏览器中进行,因此你可以安全地格式化包含内部表名或示例数据的查询。
SQL 关键字应该大写吗?
SQL 关键字是不区分大小写的,所以这只是代码风格问题。大写关键字(SELECT、FROM、WHERE)是传统惯例,因为它们能与表名和列名区分开来,而许多现代团队则更喜欢小写。选择一种风格并保持一致即可。