本文へスキップ
SPCXTools

SQLフォーマッター

長くて読みにくいSQLを、インデントが揃ったクリーンで読みやすいクエリに変換します。

ローカルで動作 — ファイルは端末から出ません

ツールを読み込み中…

SQLフォーマッターの使い方

  1. 1入力ボックスにSQLクエリを貼り付けるか、サンプルをクリックして例を試します。
  2. 2データベース固有の構文を正しく認識させるため、SQLの種類を選択します。
  3. 3キーワードの表示形式(大文字、小文字、または入力のまま)と、インデントを選択します。
  4. 4フォーマットされたクエリをコピーするか、.sqlファイルとしてダウンロードします。

SQLを読みやすく整形

ログからコピーしたクエリ、ORMが生成したクエリ、あるいは急いで書いたクエリは、1行の長い文字列になりがちで、読みにくくデバッグも困難です。このSQLフォーマッターは、クエリを SELECT、FROM、JOIN、WHERE、GROUP BY、ORDER BY などの句ごとに明確に分割します。各カラムや条件を改行して配置し、サブクエリや CASE 式のインデントを統一します。これにより、コードレビューやバージョン管理での差分比較、チームメンバーとの共有が容易になります。

主な機能

  • 12種類のSQL方言に対応: 標準SQLをはじめ、MySQL、PostgreSQL、SQL Server、Oracle、BigQuery、Snowflakeなどに対応。
  • キーワードの大文字・小文字: 大文字(UPPER)、小文字(lower)、または入力のまま維持。キーワード、データ型、関数に適用されます。
  • インデント: 2スペース、4スペース、またはタブから選択可能。
  • 複数ステートメント: セミコロンで区切られた複数のクエリに対応。
  • コメントの保持: --(行コメント)と /* */(ブロックコメント)の両方をそのまま保持します。
  • コピー&ダウンロード: 整形結果をクリップボードにコピー、または .sql ファイルとしてダウンロードできます。
  • プライバシー保護: フォーマッターはブラウザ内でローカルに動作するため安全です。

変換前と変換後

次のようなクエリが:

select u.id, u.name, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.status = 'active' group by u.id, u.name order by orders desc;

このように整形されます:

SELECT
  u.id,
  u.name,
  COUNT(o.id) AS orders
FROM
  users u
  LEFT JOIN orders o ON o.user_id = u.id
WHERE
  u.status = 'active'
GROUP BY
  u.id,
  u.name
ORDER BY
  orders DESC;

SQLスタイルのコツ

  • 1行に1つの句を記述する。 主要な句を改行して記述することで、クエリの構造が一目でわかるようになります。
  • 意味のあるエイリアスを使用する。 短いクエリでは u や o のような短いエイリアスでも問題ありませんが、長いレポートではわかりやすい名前が役立ちます。
  • カラム名を修飾する。 JOIN(結合)時は曖昧さを避けるため、(user_id ではなく orders.user_id のように)テーブル名を含めて記述します。
  • フォーマットを統一する。 プロジェクト全体で書式を統一することで、差分(diff)を確認する際に、空白文字のズレではなく実際の変更箇所が明確になります。

関連ツール

クエリ結果を扱う作業には、エクスポートしたデータを変換できるCSV JSON 変換、APIレスポンスを見やすく整形するJSONフォーマッター、2つのクエリの変更点を比較できる差分チェッカーが便利です。

よくある質問

どのSQLダイアレクトに対応していますか?
Standard SQL、MySQL、MariaDB、PostgreSQL、SQLite、SQL Server (T-SQL)、Oracle PL/SQL、Google BigQuery、Snowflake、Amazon Redshift、Spark SQL、IBM Db2 に対応しています。バッククォートによる識別子、角括弧、ドル引用符文字列、特殊な演算子など、データベース固有の構文を正しく処理するために、適切なダイアレクトを選択してください。
フォーマットによってクエリの動作は変わりますか?
いいえ。フォーマッターが変更するのは、空白、改行、および(設定した場合)キーワード、データ型、関数名の大文字・小文字のみです。テーブル名、カラム名、文字列、コメントは一切変更されません。
エラーが発生するのはなぜですか?
フォーマッターはクエリの構造を解析する必要があります。エラーの多くは、タイプミス、引用符や括弧の閉じ忘れ、または異なるデータベースの構文によるものです。別のダイアレクトを選択してみてください。また、{{ name }} のようなテンプレートのプレースホルダーもパーサーのエラーを引き起こす可能性があります。
複数のSQL文を一度にフォーマットできますか?
はい。各SQL文をセミコロンで区切ると、それぞれがフォーマットされ、文と文の間に空白行が挿入されます。
入力したSQLはサーバーに送信されますか?
いいえ。フォーマット処理はすべてお使いのブラウザ内で完結するため、内部のテーブル名やサンプルデータを含むクエリも安全にフォーマットできます。
SQLのキーワードは大文字にするべきですか?
SQLのキーワードは大文字・小文字を区別しないため、スタイルの問題です。大文字のキーワード(SELECT、FROM、WHERE)はテーブル名やカラム名と区別しやすいため伝統的によく使われますが、最近では小文字を好むチームも増えています。どちらかを選び、一貫して使用することをおすすめします。