SQL 格式化工具

把雜亂的 SQL 整理成好讀、縮排一致的語句。可選擇方言與關鍵字大小寫,格式化全程在瀏覽器內完成。

SQL 輸入

貼上 SQL

格式化後的 SQL

結果

SQL 格式化工具在做什麼?

SQL 格式化工具會用一致的縮排、換行與空白重寫查詢,讓 JOIN、子查詢與 CASE 區塊的結構一眼可見。從日誌、ORM 或查詢產生器複製出來的一整行語句,用它整理最快。

格式化會依方言處理,這比想像中重要:MySQL 的反引號、PostgreSQL 的型別轉換、BigQuery 的陣列、Transact-SQL 的 TOP 各有不同規則,因此解析前要先指定資料庫,識別字、運算子與字面值才能原樣保留。

語句不會被執行,也不會傳到任何地方:解析與重新輸出都在瀏覽器內完成。格式化不會改變查詢的語意——識別字、運算子、字面值與順序都會保留,字串常值裡的內容絕不會被更動;關鍵字大小寫只在你要求時才改變。要在提交前確認實際改動,可以把前後版本貼進 [文字比對](/diff) 工具。

如何格式化 SQL

  1. 把查詢貼到輸入框,單一語句或長腳本都可以。
  2. 選擇資料庫使用的方言:標準 SQL、MySQL、MariaDB、PostgreSQL、SQLite、BigQuery、Snowflake、Transact-SQL、PL/SQL 或 Redshift。
  3. 選擇關鍵字大小寫:upper 是經典風格,lower 給偏好小寫的團隊,preserve 則保留查詢原本的大小寫。
  4. 按「格式化 SQL」。
  5. 方言與語法不符時會回報解析錯誤與位置,切換下拉選單後再試一次。
  6. 複製結果、下載成 .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 命令列工具。

全部工具