ZeroTool Workbench

SQL フォーマッター

SQLクエリを整形・美化・圧縮。無料、ブラウザ完結。

100% クライアントサイド データはブラウザ外に出ません 無料 · 登録不要

使い方

  1. SQLクエリを入力欄に貼り付けます。
  2. 整形をクリックして読みやすいSQL形式に変換します。
  3. 圧縮をクリックして空白を除去した1行形式にします。
  4. 結果をコピーします。

SQLフォーマットについて

整形されたSQLは読みやすく、コードレビューやデバッグが容易になります。また、ORMが生成した圧縮されたSQLを読む際に整形ツールは非常に役立ちます。一方、ログやAPIパラメータとして渡す場合は圧縮形式が適しています。

整形の例

整形前:

select u.id, u.name, o.total from users u join orders o on u.id = o.user_id where o.total > 100 and u.active = 1 order by o.total desc limit 10;

整形後(既定の設定):

SELECT
  u.id,
  u.name,
  o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.total > 100
  AND u.active = 1
ORDER BY o.total DESC
LIMIT 10;

サブクエリの例

既定の設定(2 スペースインデント、キーワード大文字)での実際の出力です。括弧内のサブクエリは 1 段深くインデントされます。

select * from users where id in (select user_id from orders where total > 100);
SELECT
  *
FROM users
WHERE id IN (
  SELECT
    user_id
  FROM orders
  WHERE total > 100
);

CTE の例

WITH ... AS (...) の中身はサブクエリと同じようにインデントされます。SUM(total) のような関数呼び出しは 1 行に収まり、ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...) のようなウィンドウ関数も同様です。

with recent as (select user_id, sum(total) as spent from orders group by user_id) select u.name, r.spent from users u join recent r on r.user_id = u.id order by r.spent desc;
WITH recent AS (
  SELECT
    user_id,
    SUM(total) AS spent
  FROM orders
  GROUP BY user_id
)
SELECT
  u.name,
  r.spent
FROM users u
JOIN recent r ON r.user_id = u.id
ORDER BY r.spent DESC;

制限事項

  • 方言は汎用の 1 種類のみで、構文チェックはしません。 MySQL・PostgreSQL・SQL Server などのモードはなく、誤った SQL もエラーなしで整形されます。
  • CASE は 1 行のままです。 CASE WHEN ... THEN ... END は WHEN ごとに改行されません。
  • 圧縮するとコメントが消え、閉じ括弧の後の空白もなくなります(例:SELECT COUNT(*)FROM events)。

FAQ

どのSQL方言に対応していますか?

方言ごとのモードはなく、汎用のSQL構文として整形します。MySQL・PostgreSQL・SQLite・SQL Serverの一般的なクエリを整形できます。

データはサーバーに送信されますか?

いいえ。すべての処理はブラウザ内で完結します。機密性の高いSQLクエリも安全に処理できます。

長い複雑なクエリも整形できますか?

JOIN、サブクエリ、CTE(WITH句)は整形できます。CASE式は1行のままです(下の「制限事項」を参照)。

整形オプションはカスタマイズできますか?

インデント(2スペース・4スペース・タブ)とキーワードの大文字変換を設定できます。