SQLを見やすく整形・1行に圧縮する使い方ガイド|ブラウザ内完結の簡易フォーマッタ
公開日:2026年7月29日 更新日:2026年9月2日 運営:シルギア(Analyzegear, Inc.) 対象ツール:SQL整形(フォーマッタ)
SELECT や FROM が1行にびっしり詰まったSQLは、どこが選択カラムでどこが絞り込み条件なのかを目で追うだけでも骨が折れます。SQL整形(フォーマッタ)は、そうしたSQLに改行とインデントを加えて構造を見えるようにしたり、逆に余分な空白を取り除いて1行へ圧縮したりするツールです。整形・圧縮ともにお使いのブラウザ内のJavaScriptだけで処理され、貼り付けたSQLがサーバーへ送られることはありません。この記事では、実際にどんなルールで整形されるのかを具体例とともに解説します。
整形が行う3つの操作
このツールの「整形」は、大きく3つの操作を組み合わせています。
- キーワードの前で改行:SELECT・FROM・WHERE・GROUP BY・ORDER BY・JOIN などの主要な節を、それぞれ新しい行の先頭に置きます。
- インデントによる段下げ:節に続くカラムや条件は一段下げて表示します。段下げの幅はスペース2個・スペース4個・タブから選べます。
- キーワードの大文字化(任意):SELECT や WHERE などの予約語だけを大文字にそろえます。テーブル名・カラム名や文字列の中身はそのままです。
どのキーワードで改行されるのか
整形では、行の先頭に来る「節キーワード」と、その中でぶら下げる「サブキーワード」を区別しています。節キーワードには SELECT / FROM / WHERE / HAVING / GROUP BY / ORDER BY / LIMIT / JOIN(LEFT JOIN・INNER JOIN など)/ UNION / INSERT INTO / VALUES / UPDATE / SET / DELETE FROM などがあり、これらの前で必ず改行してインデント0の行を作ります。一方 ON・AND・OR はサブキーワードとして扱われ、直前の節より一段深い位置に改行して置かれます。SELECT のカラムやカンマ区切りの項目も、カンマの後で改行して一項目ずつ別の行に分けます。
1行のSQLが整形される具体例
たとえば select id,name from users where age>20 and active=1 order by id を、スペース2・大文字化オンで整形すると、次のように展開されます。
- SELECT が先頭行になり、id と name がそれぞれ2スペース下げで別々の行に並ぶ
- FROM の下に users が段下げで入る
- WHERE の下に age > 20、続けて AND active = 1 が同じ段下げで並ぶ
- ORDER BY の下に id が入る
結果は10行に展開され、比較演算子の周りには自動でスペースが補われて age > 20 のように読みやすくなります。LEFT JOIN を含むクエリなら、LEFT JOIN が1つの節として独立した行になり、その ON 条件はさらに一段深くぶら下がります。
圧縮(1行化)と整形の違い
圧縮モードは整形の逆で、改行や連続した空白をすべて1スペースに畳んでSQLを1行にまとめます。テストコードの文字列やコマンド引数、ドキュメントの1行にSQLを収めたいときに便利です。ここで知っておきたいのは、圧縮は空白を詰めるだけで、トークンどうしの間隔は原文のまま残すという点です。先ほどの例を圧縮すると SELECT id,name FROM users WHERE age>20 AND active=1 ORDER BY id となり、カンマの後や演算子の周りにスペースは足されません(大文字化だけは適用されます)。整形のように見た目を整える処理ではなく、あくまで1行に詰め直す処理だと理解しておくと迷いません。
文字列やコメントを壊さない仕組み
整形で怖いのは、SQLの意味そのものが変わってしまう事故です。このツールは入力をトークンに分解する際、次の4種類の中身を「そのまま保持する塊」として扱います。
- シングルクオートで囲んだ文字列リテラル(例: 'active')
- ダブルクオートやバッククオートで囲んだ識別子
- ダッシュ2つで始まる行コメント
- スラッシュとアスタリスクで囲んだブロックコメント
これらの内側に SELECT や FROM のように見える単語があっても、大文字化や改行の対象にはなりません。たとえば条件が u.status = 'active' の場合、'active' は小文字のまま維持され、整形しても意味は変わりません。
使いこなしのコツと注意
いちばん役立つのは、他人が書いた読みにくいSQLや、ログに出力された1行クエリを引き継いだときです。まず貼り付けて整形すれば、結合しているテーブルや絞り込み条件が行単位で見え、レビューやデバッグが一気に楽になります。チームの規約に合わせて、大文字化のオンオフやインデント幅を切り替えるのもよいでしょう。ただし本ツールは軽量な簡易フォーマッタで、方言特有の構文やネストの深いサブクエリ、非常に複雑なSQLでは整形が崩れることがあります。整形に失敗したときは原文をそのまま返す作りなので入力が壊れる心配はありませんが、仕上がりが不十分な場合は可読性を上げる補助として使い、最終的な正しさはご自身で確認してください。