SQLフォーマッター

乱雑なSQLを読みやすいクエリに整えます。

ブラウザ内で動作します。入力した内容はどこにも送信されません。

SQLの整形方法

  1. SQLクエリを貼り付けます。
  2. 方言、キーワードの大文字・小文字、インデント幅を選びます。
  3. 整形したSQLをコピーまたはダウンロードします。

対応している方言ごとの違い

方言考慮している特徴
MySQLバッククォートで囲む識別子
PostgreSQLダブルクォートの識別子と::型キャスト
SQL Server角括弧の識別子とLIMITの代わりのTOP
SQLiteより緩やかなクォートのルール
BigQueryproject.dataset.tableのようなバッククォート付きテーブルパス
標準SQLANSI形式のダブルクォート識別子、デフォルトの対象

整形が変えるもの、変えないもの

  • 変わるもの:キーワードの大文字・小文字、句やJOINのインデント、SELECT、FROM、WHERE、JOINの前の改行位置。
  • 変わらないもの:テーブル名や列名、文字列リテラルの内容、クエリ内のコメント。
  • --や/* */で書かれたコメントは、同じ行やブロックに付いたまま、元の位置を保ちます。

SQLを整形するコツ

  • セミコロンで区切った複数のステートメントを貼り付ければ、それぞれがその場で整形されます。
  • 実際に使っているデータベースの方言を選ぶと、出力の識別子のクォートがサーバーの想定と一致します。
  • 方言のクォート形式がデータベースでエラーになる場合は、標準SQLを試して識別子を手動で調整してください。
  • インデント幅を大きくすると、各ネスト階層が際立つため、JOINの多い長いクエリが見やすくなります。

SQLフォーマッターのFAQ

どのSQL方言に対応していますか?

標準SQL、MySQL、PostgreSQL、SQL Server、SQLite、BigQueryに対応しています。それぞれクォートや関数の扱いが少しずつ異なります。

SQLが正しいかどうかをチェックしますか?

いいえ。読みやすいようにクエリを整形するだけです。データベースへの接続やテーブル名・列名の検証は行いません。

クエリが複数入ったファイル全体を一度に整形できますか?

はい。セミコロンで区切られた複数のステートメントを貼り付ければ、それぞれがその場で整形されます。

インデント幅は何を制御しますか?

ネストの各階層に何個のスペースを使うかを設定します。コンパクトなクエリなら2、深くネストしたJOINやサブクエリなら8までです。

SQLはどこかにアップロードされますか?

いいえ。整形はブラウザ内で行われるため、クエリやその中のデータは端末にとどまります。

整形するとクエリの順序が変わりますか?

いいえ。句、JOIN、サブクエリは書いた順序のまま変わりません。変わるのはインデント、改行、キーワードの大文字・小文字だけです。

ストアドプロシージャや変数を含むスクリプトも整形できますか?

通常のSELECT、INSERT、UPDATE、DELETE文はきれいに整形されます。T-SQLの制御構文やPL/pgSQLブロックのような方言固有の手続き型構文は、フォーマッターが標準的なクエリ構文を対象としているため、きれいにインデントされないことがあります。

CTE(WITH句)やウィンドウ関数にも対応していますか?

はい。共通テーブル式やウィンドウ関数も、内部で使用しているsql-formatterライブラリが理解する他の構文と同様に、それぞれのインデントを含めて整形されます。

関連ツール