SQL 格式化工具
把雜亂的 SQL 整理成好讀、縮排一致的語句。可選擇方言與關鍵字大小寫,格式化全程在瀏覽器內完成。
貼上 SQL
結果
SQL 格式化工具在做什麼?
SQL 格式化工具會用一致的縮排、換行與空白重寫查詢,讓 JOIN、子查詢與 CASE 區塊的結構一眼可見。從日誌、ORM 或查詢產生器複製出來的一整行語句,用它整理最快。
格式化會依方言處理,這比想像中重要:MySQL 的反引號、PostgreSQL 的型別轉換、BigQuery 的陣列、Transact-SQL 的 TOP 各有不同規則,因此解析前要先指定資料庫,識別字、運算子與字面值才能原樣保留。
語句不會被執行,也不會傳到任何地方:解析與重新輸出都在瀏覽器內完成。格式化不會改變查詢的語意——識別字、運算子、字面值與順序都會保留,字串常值裡的內容絕不會被更動;關鍵字大小寫只在你要求時才改變。要在提交前確認實際改動,可以把前後版本貼進 [文字比對](/diff) 工具。
如何格式化 SQL
- 把查詢貼到輸入框,單一語句或長腳本都可以。
- 選擇資料庫使用的方言:標準 SQL、MySQL、MariaDB、PostgreSQL、SQLite、BigQuery、Snowflake、Transact-SQL、PL/SQL 或 Redshift。
- 選擇關鍵字大小寫:upper 是經典風格,lower 給偏好小寫的團隊,preserve 則保留查詢原本的大小寫。
- 按「格式化 SQL」。
- 方言與語法不符時會回報解析錯誤與位置,切換下拉選單後再試一次。
- 複製結果、下載成 .sql 檔,或先用 [文字比對工具](/diff) 跟原始版本比一次再提交。
SQL 格式化範例
單行 SELECT 加 JOIN
select u.id,u.name from users u join orders o on o.user_id=u.id where o.total>100 order by o.total desc;
SELECT u.id, u.name FROM users u JOIN orders o ON o.user_id = u.id WHERE o.total > 100 ORDER BY o.total DESC;
寫成一行的 CTE
with recent as (select id,total from orders where created_at>'2026-01-01') select count(*) from recent where total>100;
WITH
recent AS (
SELECT
id,
total
FROM
orders
WHERE
created_at > '2026-01-01'
)
SELECT
count(*)
FROM
recent
WHERE
total > 100;WHERE 裡的子查詢
select * from users where id in (select user_id from orders where total>500) and active=true;
SELECT
*
FROM
users
WHERE
id IN (
SELECT
user_id
FROM
orders
WHERE
total > 500
)
AND active = TRUE;視窗函數報表查詢
select customer_id, row_number() over (partition by customer_id order by created_at desc) as rn from orders;
SELECT
customer_id,
row_number() OVER (
PARTITION BY
customer_id
ORDER BY
created_at DESC
) AS rn
FROM
orders;Transact-SQL 查詢
select top 10 name, created_at from dbo.users where deleted_at is null order by created_at desc;
SELECT TOP 10 name, created_at FROM dbo.users WHERE deleted_at IS NULL ORDER BY created_at DESC;
SQL 格式化:UrsaKit 與其他選擇
| 比較項目 | UrsaKit | 自己實作 | 一般網上工具 |
|---|---|---|---|
| 準備工作 | 打開網頁 | 安裝並執行 CLI | 打開網頁 |
| 方言支援 | 一個頁面 10 種方言 | 每個工具一種 | 不一 |
| 資料是否離開裝置 | 否,在瀏覽器內完成 | 否 | 通常會傳到伺服器 |
| 選項 | 方言與關鍵字大小寫 | 完整 CLI 參數 | 通常只有關鍵字大小寫 |
| 關鍵字大小寫 | upper、lower 或 preserve | 可設定 | 通常固定 |
| 需要註冊 | 否 | 否 | 有時需要 |
常見問題
支援哪些 SQL 方言?
下拉選單共有 10 個選項:標準 SQL,以及 MySQL、MariaDB、PostgreSQL、SQLite、BigQuery、Snowflake、Transact-SQL、PL/SQL 與 Redshift。請選擇資料庫實際使用的方言,解析器會套用該方言的引號與語法規則。
格式化會改變我的查詢嗎?
不會。只有空白與換行會移動:識別字、運算子、字面值與順序都保留,字串常值裡的內容也絕不會被更動,所以 'Ada' 或字串裡的跳脫引號都會原樣寫回。關鍵字大小寫只在你選擇 upper 或 lower 時才改變,選 preserve 就完全不動。唯一的例外是解析器不認識的參數佔位符,例如 PostgreSQL 的 %s 或 $1,可能被重新加空白或被吃掉,貼回程式碼前請先比對差異。
為什麼會出現語法錯誤?
格式化工具會用你選的方言解析語句,因此引號不成對,或語法其實屬於別的資料庫(例如在 PostgreSQL 方言下使用 MySQL 的 [b] 識別字)都會回報解析錯誤。訊息會指出方言與位置,切換下拉選單後再試一次。
我的 SQL 會被上傳嗎?
不會。格式化在瀏覽器內以 JavaScript 在本機完成。
可以讓關鍵字保持小寫嗎?
可以。選 lower 會全部轉成小寫,選 preserve 則保留查詢原本的大小寫。
可以離線使用嗎?
可以。頁面載入後,格式化不會再發出任何網絡請求。
在 VS Code、DBeaver 或 DataGrip 裡怎麼格式化 SQL?
VS Code 請安裝 SQL 格式化擴充套件,再按 Shift+Alt+F(Windows / Linux)或 Shift+Option+F(macOS)執行格式化文件。DBeaver 的 SQL 編輯器用 Ctrl+Shift+F;DataGrip 等 JetBrains IDE 用 Code → Reformat Code(Ctrl+Alt+L,macOS 為 Cmd+Option+L)。若要在伺服器或 CI 上處理,常用的是 sqlfluff 與 sql-formatter 命令列工具。