ZeroTool Workbench
SQL フォーマッター
SQLクエリを整形・美化・圧縮。無料、ブラウザ完結。
使い方
- SQLクエリを入力欄に貼り付けます。
- 整形をクリックして読みやすいSQL形式に変換します。
- 圧縮をクリックして空白を除去した1行形式にします。
- 結果をコピーします。
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スペース・タブ)とキーワードの大文字変換を設定できます。