piapia123
ja

SQL の整形と圧縮

整形

処理はすべてブラウザ内で完結します。データは送信されません

入力
出力

1行に詰まった SQL を句ごとに行を分けた構造へ展開します。各句はそれぞれ別の行から始まり、本文はその下に1段インデントされます。AND / OR と JOIN / ON はそれぞれ別の行にし、括弧の中がサブクエリならさらに1段深く、閉じ ) は元の階層に戻します。キーワードは大文字・小文字・そのままから選べ、識別子と引用符で囲まれた内容は決して変更しません。文字列・コメント・バッククォートと角括弧の識別子・Postgres のドル引用の内部は構造判断に加わらないので、文字列の中のセミコロンが1つの文を真っ二つに切ることはありません。

機能

  • 句ごとに改行:SELECT / FROM / WHERE / GROUP BY / ORDER BY / HAVING / LIMIT / VALUES / SET / RETURNING など
  • AND / OR / JOIN / ON がそれぞれ別の行になり、条件が多いときも境界が一目で分かります
  • 括弧の中がサブクエリならブロックとして展開し、閉じ ) は句の本文の階層に戻します
  • 関数呼び出しの括弧はインラインのまま。COUNT(*) が分割されることはありません
  • キーワードは大文字・小文字・そのままを選べます。識別子と文字列は常にそのまま保持します
  • 文字列・コメント・バッククォートと角括弧の識別子・Postgres のドル引用の内部は構造判断に加わりません
  • 圧縮モードはコメントと余分な空白を削除し、- -1 を --1 に繋げません(コメント化して後半が丸ごと無効になるため)
  • 構文チェックはしません:不正な SQL もエラーにせず、できる範囲でインデントします

使い方

  1. SQL を入力欄に貼り付けます
  2. 処理方法・インデント・キーワードの大文字小文字を選びます
  3. Ctrl/⌘ + Enter を押すか「実行」をクリックします
  4. 「コピー」で結果を取り出せます

よくある質問

SQL の構文は検証されますか?
いいえ。このツールは空白とキーワードの大文字小文字を並べ替えるだけで、構文解析はしません。書き間違えた SQL もそのまま整形されて出力されます。動く文を読みやすくするためのものであって、データベースのエラーメッセージの代わりではありません。
圧縮モードでコメントまで消えるのはなぜですか?
行コメントを同じ行に詰めると、その後の文が丸ごとコメントアウトされてしまうのに、出力はまったく正常に見えます。いつコードを食べてしまうか分からないコメントを残すより、まとめて削除するほうが安全です。コメントを残したいときは整形モードをお使いください。
どのデータベースの方言に対応していますか?
キーワード表は一般的な SQL に合わせて整えつつ、MySQL の # コメントとバッククォート、SQL Server の角括弧識別子、Postgres の $$ ドル引用と :: キャストにも配慮しています。整形そのものは方言に依存しません。
SQL は送信されますか?
いいえ。処理はすべてブラウザのメモリ内で完結し、ページはリクエストを一切送りません。オフラインでも使えます。

関連ツール