SQL 整形ツール(SQL Formatter)

読みにくいクエリを貼り付けるだけで、一貫したインデントのきれいな SQL に。17 の方言、キーワードの大文字小文字の変換、ワンクリックの圧縮に対応し、すべてブラウザ内で動作します。

ブラウザ内で動作登録不要アップロードなし

整形済み SQL

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

  1. 入力欄に 1 つ以上の SQL 文を貼り付けるか、.sql ファイルを開きます。
  2. データベースの方言を選び、:: によるキャスト、[brackets]、バッククォート、$$ 文字列などの構文が正しく解析されるようにします。
  3. キーワードの大文字小文字(大文字、小文字、そのまま)、インデント、文と文の間の空行数を設定します。
  4. ログ、ORM、URL パラメータ用にコメントと空白を取り除くには圧縮に切り替えます。
  5. 結果をコピーするか、.sql ファイルとしてダウンロードします。

なぜ SQL を整形するのか?

ORM のログ、実行計画、アプリケーションコードからコピーしたクエリは、たいてい 1 行の長い文字列です。各句(SELECT、FROM、JOIN、WHERE、GROUP BY)をそれぞれの行に置き、カラムや条件をインデントすると、ロジックが読みやすくなります。コードレビューの差分も小さくなり、結合条件の抜けや OR の位置の誤りにも気づきやすくなります。

SQL のスタイル規約

  • キーワードは大文字(SELECT、WHERE)にすると、SQL の構文とテーブル名・カラム名を区別できます。多くのスタイルガイドが推奨していますが、dbt や分析チームでは小文字も人気です。
  • 1 行に 1 カラムにすると、カラムの追加・削除が 1 行の差分で済みます。
  • 一貫したインデント(スペース 2 個または 4 個)を句やサブクエリの中で使うと、ネストがひと目でわかります。
  • 文の終端:すべての文を ; で終えると、複数の文を含むスクリプトでも曖昧さがなくなります。

対応している SQL の方言

標準 SQL、PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Server(T-SQL)、Oracle PL/SQL、Google BigQuery、Snowflake、Amazon Redshift、Spark SQL、Trino/Presto、Hive、IBM Db2、Couchbase N1QL、SingleStore、TiDB。クエリの解析に失敗する場合は、より具体的な方言を試してください。@variables、$1 パラメータ、ベンダー固有の演算子は、それぞれの方言でしか認識されません。

圧縮モードの処理内容

圧縮モードは --、#、/* */ のコメントを削除し、空白と改行を 1 つのスペースにまとめ、カンマや括弧の前後のスペースを取り除きます。文字列リテラルと引用符付きの識別子('…'、"…"、`…`、[…]、$$…$$)は 1 バイトも変えずにコピーされるため、クエリの意味が変わることはありません。

よくある質問

SQL はサーバーに送信されますか?
いいえ。整形にはブラウザ内で動作するオープンソースの sql-formatter ライブラリを使います。テーブル名、顧客データ、認証情報を含むクエリもお使いのマシンから出ません。
整形するとクエリの動作が変わりますか?
いいえ。変わるのは空白、改行、そして(選択した場合は)キーワードの大文字小文字だけです。識別子、文字列リテラル、コメントは書かれたとおりに保持されます。
正しい SQL なのに構文エラーになるのはなぜですか?
クエリが別のデータベース固有の構文を使っている可能性があります。対応する方言を選んでください。たとえば ::type のキャストなら PostgreSQL、[bracketed] の名前や @params なら SQL Server です。
複数の文をまとめて整形できますか?
はい。文をセミコロンで区切ってください。出力で文の間に入れる空行の数も選べます。
キーワードの大文字小文字の変換でカラム名も変わりますか?
いいえ。変換されるのは予約語、データ型、組み込み関数だけです。テーブル名とカラム名は元の表記のままです。

関連ツール