跳到主要內容

SQL 語法格式化

在瀏覽器中美化或壓縮 SQL,支援 MySQL、PostgreSQL、SQL Server、SQLite、BigQuery、Oracle 等共 20 種方言,還能自選排版風格。

已格式化
按下「格式化 SQL」即可美化你的查詢。
在瀏覽器中執行・不需上傳運作方式

SQL 格式化工具 使用方法

  1. 1

    貼上 SQL

    貼上一段查詢或整份腳本,或開啟 .sql 檔案;按「範例」可載入一段凌亂的查詢來試試。

  2. 2

    選擇方言

    選擇你使用的資料庫,引號、運算子與關鍵字才能被正確辨識。

  3. 3

    設定樣式

    選擇關鍵字大小寫、縮排、逗號位置與版面配置,符合團隊的撰寫慣例。

  4. 4

    格式化並複製

    按下「格式化 SQL」或壓縮,再複製高亮顯示的結果,或下載為 .sql 檔案。

限制與 Pro

免費使用,不需註冊:支援 20 種方言、最大 10 MB 的 .sql 檔案,以及能在 20 秒內完成格式化的腳本;輸出超過 600,000 個字元時只會預覽部分內容,複製與下載則是完整內容。

Pro 方案可移除廣告,格式化功能在所有方案中都一樣。 查看 Pro

關於 SQL 格式化工具

把日誌、ORM 偵錯輸出或同事聊天訊息裡的單行查詢貼上來,這個格式化工具會像細心的人那樣重新排版:每個子句各佔一行,選取的欄位與 JOIN 縮排在對應關鍵字下方,子查詢也會巢狀排列,結構一眼就能看懂。它支援 20 種 SQL 方言,包括標準 SQL、MySQL、MariaDB、PostgreSQL、SQL Server T-SQL、SQLite、Oracle PL/SQL、BigQuery、Snowflake、Redshift、Spark、Trino、DuckDB、ClickHouse、Hive、Db2、Db2 for i、SingleStore、TiDB 與 Couchbase N1QL,因此反引號識別字、方括號、:: 型別轉換或錢字號引用字串等方言語法都會原樣保留。

你可以自訂風格:關鍵字、函式名稱與資料型別可選大寫、小寫或維持原樣;縮排可選 2 個空格、4 個空格或 Tab;逗號可放在行首或行尾;AND 與 OR 可放在換行之前或之後;版面配置可選標準或將關鍵字對齊成一欄的表格式。多段陳述式的腳本會以空白行分隔。壓縮功能則相反,會移除註解與多餘空白,但字串、加引號的名稱與最佳化提示都不會更動。

結果會以語法高亮顯示,可複製或下載為 .sql 檔案。格式化使用開源的 sql-formatter 函式庫,第一次按下格式化時才會載入,並在背景執行緒中執行,長腳本也不會卡住頁面。

本工具只會改變空白與字母大小寫,不會驗證資料表或欄位名稱、不會執行查詢,也不會為了效能改寫內容。遇到廠商特有語法的預存程序,可能需要改選最接近的方言。

隱私

SQL 由網頁背景執行緒(Web Worker)在你的瀏覽器內格式化,含有資料表名稱、客戶資料或憑證的查詢都不會傳送到伺服器。你選擇的方言與樣式會儲存在本機儲存空間,SQL 內容本身不會被儲存。

功能

20 種 SQL 方言

支援 MySQL、PostgreSQL、SQL Server、Oracle、BigQuery、Snowflake 等共 20 種。

自訂你的風格

可設定關鍵字大小寫、縮排、逗號在行首或行尾、AND/OR 位置與表格式版面。

也能壓縮

移除註解與空白,方便把 SQL 嵌入程式碼,字串與提示都會保持不變。

SQL 格式化工具:常見問題

格式化會改變查詢的執行結果嗎?
不會。只有空白、換行,以及關鍵字、函式與資料型別的大小寫會改變;識別字、字串常值與註解都會原樣保留。SQL 關鍵字不分大小寫,所以調整大小寫是安全的。PostgreSQL 的加引號名稱會區分大小寫,因此本工具不會更動識別字。
為什麼會出現解析錯誤?
格式化工具必須辨識出陳述式結構,所以括號沒有成對、缺少關鍵字或使用了其他資料庫的語法都會讓它中斷。錯誤訊息會指出行與欄,以及該處預期的內容。請選對方言:方括號識別字需用 SQL Server,反引號則用 MySQL、MariaDB 或 BigQuery;也請檢查結尾是否有未完成的陳述式。
逗號應該放在行首還是行尾?
行尾逗號是最常見的寫法,多數工具也是這樣輸出。行首逗號方便註解掉最後一個欄位,新增欄位時差異也只會多一行,所以有些資料團隊偏好這種寫法。請依團隊習慣選擇;此選項只適用於標準版面配置。
可以格式化預存程序或包含多個陳述式的腳本嗎?
可以。貼上完整腳本後,每個陳述式都會格式化並以空白行分隔,包括 CREATE TABLE、INSERT、UPDATE、MERGE 與常見的程序區塊。廠商特有的程序式程式碼,例如含 GO 分隔的複雜 T-SQL 批次或 PL/SQL 套件,可能無法完全解析;請選對應的方言,若某段失敗就分成較小的區塊處理。
壓縮會移除哪些內容?
壓縮會刪除 -- 與 /* */ 註解(MySQL 與 MariaDB 也包括 # 註解),把連續的空格與換行合併成單一空格,並移除逗號與括號旁的空格。字串常值、加引號的識別字,以及 /*+ … */ 或 MySQL 的 /*! … */ 最佳化提示都會保留,所以壓縮後的查詢執行結果與原本相同。