跳至主要內容
SPCXTools

SQL 格式化工具

將冗長、雜亂的 SQL 轉換為乾淨、易讀且縮排一致的查詢語法。

本機執行 — 檔案絕不會離開您的裝置

正在載入工具…

如何使用 SQL 格式化工具

  1. 1將您的 SQL 查詢貼入輸入框,或點擊範例來試用。
  2. 2選擇您的 SQL 語系,以正確辨識特定資料庫的語法。
  3. 3選擇關鍵字的大小寫(大寫、小寫或維持原樣)以及縮排方式。
  4. 4複製格式化後的查詢,或將其下載為 .sql 檔案。

讓 SQL 更易讀

從 log 複製、由 ORM 產生或匆忙寫下的 SQL 查詢,往往會擠成冗長的一行,不僅難以閱讀,除錯更是困難。這款 SQL 格式化工具能將您的查詢拆分成清晰的子句 — SELECT、FROM、JOIN、WHERE、GROUP BY、ORDER BY — 讓每個欄位與條件獨立成行,並對子查詢與 CASE 表達式進行一致的縮排。排版後的結果不僅更容易審查、在版本控制中進行比對,也方便與同事分享。

功能特色

  • 支援 12 種 SQL 方言:從標準 SQL 到 MySQL、PostgreSQL、SQL Server、Oracle、BigQuery 與 Snowflake。
  • 關鍵字大小寫:大寫 (UPPER)、小寫 (lower) 或維持原樣;適用於關鍵字、資料型別與函式。
  • 縮排:支援 2 個空格、4 個空格或 Tab 鍵。
  • 多個 SQL 語句:支援以分號分隔的多句查詢。
  • 保留註解:包含 -- 單行註解與 /* */ 區塊註解。
  • 複製或下載:可直接複製結果,或下載為 .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 關鍵字應該用大寫嗎?
SQL 關鍵字不區分大小寫,因此這取決於個人或團隊風格。大寫關鍵字(如 SELECT、FROM、WHERE)是傳統慣例,因為這樣能與資料表和欄位名稱做出區別;不過現在也有許多開發團隊偏好使用小寫。建議選擇一種風格並保持一致即可。