本文へスキップ
SQL

SQLフォーマッタ

SQLを整形・圧縮。

-- active users with their most recent order SELECT u.id, u.name, o.total FROM users u JOIN orders o ON o.user_id = u.id WHERE u.active = 1 AND o.total > 100 AND u.name <> 'select' -- literal text is never re-cased ORDER BY o.total DESC LIMIT 10;

MySQL・PostgreSQL・SQL Serverの識別子クォート記法("…"・`…`・[…])をすべて同時に認識するため、方言の切り替えは不要です。文字列リテラル・クォート付き識別子・コメントの中身は整形/圧縮のどちらでも一切書き換えません。丸括弧の中にSELECTを含む場合のみサブクエリとして新しいインデント階層で改行し、それ以外の関数呼び出しの括弧はインラインのまま保ちます。すべての処理はブラウザ内で完結し、クエリは外部へ送信されません。

SQLフォーマッタについて

SQLフォーマッタとは、長いクエリをインデントや改行で読みやすく整えたり、逆に空白とコメントを削って圧縮したりするツールです。コードレビューやログの可読性向上に役立ちます。 toco.toolsのSQLフォーマッタは方言を選ばせません。その代わり、`"postgres風"`・`` `mysql風` ``・`[SQL Server風]` という3つのクォート識別子記法と、文字列のエスケープ記法(`''`による二重引用符と`\'`によるバックスラッシュエスケープの両方)を同時に認識します。専用の字句解析(トークナイザ)でSQLを意味のある単位に分解してから整形するため、文字列リテラルやコメント、クォート付き識別子の中に`SELECT`や`FROM`のようなキーワードに似た文字列が含まれていても、それらを誤って書き換えることはありません。 SELECT・FROM・WHERE・JOINなど主要な句はキーワードごとに改行し、AND/ORはWHERE句・HAVING句の中で1段階インデントして改行します。SELECT・GROUP BY・ORDER BYのカンマ区切りの列は既定で1行ずつに分割され(オフにも切り替え可能)、丸括弧の中にSELECTを含む場合だけサブクエリとして新しいインデント階層を作ります。完全な構文解析器ではなく実用的な読みやすさを目的にしているため、方言固有の関数・ストアドプロシージャ構文までは踏み込みません。本番適用前に実行計画と構文チェックを行ってください。

使い方

  1. SQLを貼り付ける
  2. キーワードの大文字小文字・インデントを選ぶ
  3. 整形または圧縮してコピー

よくある質問(FAQ)

SQLフォーマッタとは何ですか?

SQLクエリの空白と改行を整え、読みやすくする(または圧縮する)ツールです。

MySQL・PostgreSQL・SQL Serverの方言は選べますか?

方言セレクタはありません。その代わり3方言のクォート識別子記法("…"・`…`・[…])と文字列エスケープを同時に認識するため、選ばずにそのまま貼り付けられます。ただし方言固有の関数・プロシージャ構文には対応しません。

文字列やコメントの中身が書き換えられてしまうことはありますか?

ありません。専用のトークナイザで文字列リテラル・クォート付き識別子・コメントを最初に識別してから整形するため、その中身は整形・圧縮のどちらでも一切変更しません。

壊れたSQL(構文エラーのあるクエリ)を入力するとどうなりますか?

文字列や識別子の引用符・コメントが閉じていない場合はエラーを表示し、出力は空になります。丸括弧の対応が取れていないだけの場合はエラーにせず、できる範囲で整形します(クエリの断片を貼り付けるケースが多いため)。

入力したデータは外部に送信されますか?

いいえ。すべての処理はブラウザ内で完結し、toco.toolsのサーバーへ送信されません。