DEADeveloper Engineering Atlas

本機 · SQL 格式化與 Pretty Printer

SQL 格式化與 Pretty Printer

SQL Pretty Printer 會依選定 dialect 辨識關鍵字、字串、註解、參數與子句,再加入一致的換行與縮排。可使用 Standard SQL、PostgreSQL、MySQL、MariaDB、SQL Server T-SQL、Oracle PL/SQL 或 SQLite。處理在瀏覽器本機完成;排版能改善閱讀,但不會驗證語法、執行查詢或判斷效能。

互動式工具

輸入資料後即可查看結果;詳細原理與限制位於操作區下方。

如何查詢

  1. 保留一份原始 SQL,特別是 production 查詢或 migration。
  2. 貼上 SQL 並選擇對應的資料庫 dialect。
  3. 設定關鍵字大小寫、縮排寬度、AND/OR 換行及多段 SQL 間距。
  4. 執行格式化後檢查 JOIN、WHERE、註解、字串、參數與括號。
  5. 複製結果,再用目標資料庫或 SQL client 驗證後才執行。

範例

輸入
SELECT id,name FROM users WHERE active=true ORDER BY name;
輸出
SELECT id, name FROM users WHERE active = true ORDER BY name;

欄位與主要子句分行,便於閱讀。

輸入
SELECT o.id,u.name FROM orders o JOIN users u ON u.id=o.user_id WHERE o.total>100;
輸出
SELECT o.id, u.name FROM orders o JOIN users u ON u.id = o.user_id WHERE o.total > 100;

JOIN、ON 與篩選條件分層縮排。

輸入
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE total>100);
輸出
子查詢另加一層縮排

巢狀結構會依括號與子句排版。

結果欄位解讀

Dialect 會影響 quoted identifier、參數、運算子與供應商專用關鍵字的辨識方式,不是自動偵測資料庫。

Keyword case 只調整已辨識的 SQL 關鍵字;Preserve 會保留原大小寫。

Indent、logical operator newline 與 statements spacing 都只改變版面。

格式化不等於語法驗證、SQL injection 防護或 EXPLAIN 查詢最佳化。

常見錯誤與限制

  • Stored procedure、自訂 delimiter、動態 SQL、dollar-quoted block 與特殊供應商語法可能無法依原意排版。
  • 不同資料庫共享核心 SQL,但 extension 不同,必須選對 dialect 並在目標環境測試。
  • 排版不會讓字串串接出的 SQL 變安全,仍應使用參數綁定。
  • 若輸出可疑,使用文字 Diff 比對並回復保留的原始版本。

常見問題

SQL formatter 做了什麼?
它解析或 tokenize SQL,再套用一致的空白、換行、縮排與關鍵字格式。
格式化會改變執行結果嗎?
設計目標只改排版,但供應商特殊語法仍要人工檢查並用目標資料庫驗證。
支援哪些 dialect?
可選 Standard SQL、PostgreSQL、MySQL、MariaDB、SQL Server T-SQL、Oracle PL/SQL 與 SQLite。
可以驗證或最佳化 SQL 嗎?
不可以。請用資料庫解析語法,用 EXPLAIN 檢查執行計畫。
SQL 會送到伺服器嗎?
不會,格式化動作在瀏覽器 JavaScript 中完成。

← 回到全部工具