SQL 格式化器与压缩器 – 完整文档、最佳实践与集成

Avatar
Manuel Schulz · 18.10.2025 · 开发 · 20–25 分钟

Zerlo SQL-Formatter & Minifier 可以让 SQL 立即变得可读(美化)或紧凑(压缩)。你可以设置 缩进(2/4/8 个空格)关键字大小写(UPPER/小写/保留),以及在 Advanced 区域的 注释移除强制分号。通过 快捷访问 提供示例代码段,使用 Self-Test 可以在几秒钟内测试行为。该页面在此可访问: zerlo.net/formattersql.

目录

  1. 快速开始
  2. 功能概览
  3. 快捷访问示例(用例)
  4. 高级选项(详细信息与注意事项)
  5. 典型应用类别(12 种场景)
  6. 集成:网站、iFrame、Teams
  7. 可选 JSON-API(包含示例)
  8. 自测(逐步)
  9. 专业提示、性能与安全
  10. 方言提示与限制
  11. 故障排除与常见问题
  12. 现在试用

1) 快速开始

  1. 打开 zerlo.net/formattersql.
  2. 在左侧粘贴你的 SQL 或者直接输入。
  3. 选择 模式: 美化 (可读) 或 压缩 (紧凑).
  4. 设定 缩进 (2/4/8) 和 关键字大小写 (UPPER/lower/Preserve) 设置。.
  5. 可选: 移除注释, 强制分号.
  6. 点击 格式化 – – 结果显示在右侧,包括 复制另存为 .sql.
  7. 自测 你可以自动对最重要的规则进行对照测试。.

2) 功能概览

3) 快捷访问示例(用例)

这些示例涵盖最常见的模式,适合作为起点。

1_einfaches_select.sql
SELECT id, name FROM products WHERE status = 'active';
2_join_mit_aggregat.sql
SELECT c.id, c.title, COUNT(p.id) AS products
FROM categories c
LEFT JOIN products p ON p.category_id = c.id
GROUP BY c.id, c.title
ORDER BY products DESC;
3_case_plus_subquery.sql
SELECT u.id, u.email,
  CASE
WHEN o.total >= 1000 THEN 'gold'
WHEN o.total >= 200  THEN 'silver'
ELSE 'bronze'
  END AS tier
FROM users u
LEFT JOIN LATERAL (
  SELECT SUM(total) AS total
  FROM orders
  WHERE user_id = u.id
) o ON TRUE;
4_cte_plus_window.sql
WITH ranked AS (
  SELECT id, customer_id, total,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY total DESC) AS rn
  FROM orders
)
SELECT * FROM ranked WHERE rn = 1;
5_insert_returning.sql
INSERT INTO users(email, role)
VALUES ('[email protected]', 'editor')
RETURNING id, email;
6_update_mit_case.sql
UPDATE accounts
SET status = CASE
  WHEN balance < 0 THEN 'overdue'
  WHEN balance = 0 THEN 'zero'
  ELSE 'ok'
END
WHERE active = 1;
7_delete_plus_exists.sql
DELETE FROM sessions s
WHERE EXISTS (
  SELECT 1 FROM users u
  WHERE u.id = s.user_id AND u.deleted_at IS NOT NULL
);

4) 高级选项(细节与注意事项)

5) 典型应用类别(12 种场景)

  1. 代码评审:: 统一的布局可加速评审,避免风格争论。
  2. 调试:: 复杂的 JOIN/CASE 立即变得直观可见。
  3. 知识共享:: 便于 Wiki/Confluence/README 的可读 SQL。
  4. 迁移与脚本:: 分号安全性,唯一块.
  5. API 嵌入:: 压缩 + 注释移除,将 SQL 嵌入应用/服务中.
  6. BI/报告:: 在与 BI 工具共享前,清理查询.
  7. 学习与培训:: CTE/窗口函数按结构化方式显示.
  8. 重构:: 先美化,再对局部区域进行隔离/优化.
  9. 错误复现:: 用于支持工单的清晰结构化查询.
  10. 风格指南执行:: 团队标准(缩进/大小写)的一致应用.
  11. 模板:: „快捷访问“ 作为新查询的基础.
  12. 发布准备:: 为稳定、可传输的制品进行压缩。.

6) 集成到网站/Teams

A) 直接使用

前往工具: zerlo.net/formattersql

B) iFrame 集成(内网/后台)

embed_iframe.html
<iframe src="https://zerlo.net/formattersql" title="SQL Formatter" width="100%" height="900" style="border:0; border-radius:12px;"></iframe>

C) 团队风格指南(基础)

7) 可选 JSON-API

你可以在工具/CI/CD 中自动化格式化。一个简洁示例:

api_request.http
POST https://zerlo.net/formattersql?api=1
Content-Type: application/json

{
  "sql": "select id,name from users where id=1",
  "mode": "beautify",
  "options": { "indent": 4, "keywordCase": "upper", "stripComments": false, "ensureSemicolon": true }
}
api_response.json
{
  "ok": true,
  "result": "SELECT id, name\nFROM users\nWHERE id = 1;",
  "stats": { "ms": 4, "inLen": 43, "outLen": 47 }
}
api_node.js
// Node.js (fetch)
const res = await fetch("https://zerlo.net/formattersql?api=1", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
sql: "SELECT * FROM orders WHERE created_at >= NOW() - INTERVAL '7 days';",
mode: "beautify",
options: { indent: 2, keywordCase: "upper", stripComments: true, ensureSemicolon: true }
  })
});
const data = await res.json();
console.log(data.result);
api_php.php
<?php
// PHP
$payload = [
  "sql" => "SELECT COUNT(*) FROM products;",
  "mode" => "minify",
  "options" => [ "indent" => 2, "keywordCase" => "preserve", "stripComments" => true, "ensureSemicolon" => true ]
];
$ch = curl_init("https://zerlo.net/formattersql?api=1");
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_RETURNTRANSFER => true
]);
$resp = curl_exec($ch);
curl_close($ch);
echo $resp;

8) 自测(逐步)

  1. 在下面的工具中点击 自测 – – 会自动检查三个核心场景。.
  2. 美化案例:: Keywords UPPER, 关键字 UPPER、清晰的换行、整洁的缩进。
  3. 压缩案例:: 移除注释(若该选项启用),输出紧凑。
  4. 缩进案例:: 可见的 2/4/8 空格切换。.
  5. 结果将显示在自测窗格中;如有偏差,请检查选项并必要时切换模式。

9) 专业提示、性能与安全

10) Dialekt提示与边界

11) 故障排除与常见问题

„没有变化?“ – 检查模式与选项;输入不能为空。

„重复的分号?“ – 选项“强制” + 已存在的 ;:禁用该选项。

„未移除注释“ – 启用注释移除或将模式设为“Minify”

„极长的查询在浏览器中卡顿“ – 逐块格式化大型块或使用 API。

„字符串中的关键字被修改了?“ – 不应发生;请检查是否是真正的字符串(引号,而不是反引号)。

12) 现在试用

在此开始: zerlo.net/formattersql

本指南对你有帮助吗?也欢迎分享: