FIRST CH TOOLS / 29 SQL Formatter

SQLクエリフォーマッター&整形

ログやコードから拾った1行に固まったSQLを左に貼ると、予約語が大文字になり、句ごとに改行され、字下げの付いたクエリが右に出ます。JOIN の ON 、サブクエリ、CASE 式もそれぞれの深さへ揃えます。インデント幅・カンマの位置・AND の位置は好みに合わせて選べます。

貼り付けるとその場で整形されます

貼り付け(SQL)
整形の結果
0
行数
0
ステートメント
0
サブクエリの深さ
0
予約語・関数
プレビュー
読み取りの結果

    貼り付けたクエリがブラウザの外へ出ることはありません(字句解析も組み立てもこのページの中だけで動いています)。ファイルの読み込みも端末内で読むだけで、アップロードは行いません。URLパラメータで直接呼び出せます: /sql-format/?sql=select%20*%20from%20t%20where%20id%3D1/sql-format/?sql=…&case=lower&indent=2&comma=leading

    How to Use

    1. SQLを貼り付けるログやコードから拾った1行のクエリを左の欄に貼ります。.sql ファイルのドラッグ&ドロップにも対応しています。
    2. 整え方を選ぶ予約語の大文字・小文字、インデント幅(スペース2/4/8・タブ)、カンマと AND の位置を切り替えます。1行にまとめるを選べば逆向きの圧縮もできます。
    3. 結果をコピーする右の欄に整形したSQLが出ます。下のプレビューでは予約語・文字列・コメントを色分けして確認でき、危険な書き方があれば指摘に出ます。

    About This Tool

    1行に固まったSQLを、句ごとに改行して字下げします。アプリケーションのログやORMが吐いたクエリ、チャットに貼られたクエリは、たいてい改行が潰れて1行になっています。このツールはSQLを字句(キーワード・識別子・文字列・演算子・コメント)へ分解し、SELECTFROMWHEREGROUP BYORDER BY といった句を行頭へ、その中身を1段下げて並べ直します。整形しても意味は変わりません(SQLは空白と改行を区切りとしか見ていないため)。

    予約語を大文字にし、識別子には触れません。予約語と型名はキーワード表と照合して大文字(または小文字)へ揃えますが、テーブル名・列名・別名の綴りは1文字も変えません。識別子の大文字・小文字はデータベースによって折りたたみ方が違い(PostgreSQLは小文字へ、Oracleは大文字へ)、引用符付きの識別子では区別されるためです。"…"`…`[…] で囲まれた部分も、'…' の文字列も、中身をそのまま残します。

    括弧は中身を見て扱いを変えます。( の直後が SELECTWITHVALUES のときだけ「サブクエリ」として改行+字下げし、それ以外(SUM(…)COALESCE(…)IN (1, 2, 3)OVER (PARTITION BY …))は1行のままにします。関数の引数まで縦に伸ばすと、かえって読み取れなくなるためです。CASE 式は WHENELSEEND を縦に並べ、BETWEEN a AND bAND は条件の区切りではないので改行しません。

    整形と同時に危険な書き方を指摘します。WHERE の無い UPDATEDELETE(全行が対象になる)、閉じていない括弧や引用符、SELECT * 、FROM にテーブルをカンマで並べた暗黙の結合、プレースホルダの有無を「読み取りの結果」に出します。1行のクエリを目で追っているときにいちばん見落としやすいところです。

    チームのスタイルに合わせられます。インデントはスペース2つ・4つ・8つ・タブから、カンマは行末・行頭から、ANDOR は行頭・行末から選べます。「句の中身も次の行から書く」を選ぶと FROMWHERE の中身も一段下げた完全展開になり、「1行にまとめる」を選ぶと逆に改行を畳んで1行へ戻します(貼り付け直すときに便利です)。選んだ設定はURLパラメータにも対応しているので、社内のドキュメントから決まった設定で開けます。

    クエリを整形したあとの差分の確認にはテキスト・コード差分チェッカー、テーブル定義や結果セットをドキュメントへ貼るならMarkdownテーブル整形&CSV/TSV変換、バッチの実行時刻を確かめるならCron式ビジュアル解説が使えます。

    From AI Agents

    この整形ロジックは、MCP(Model Context Protocol)サーバー @first-ch/tools-mcpsql_format ツールとしても提供しており、ブラウザを使わずAIエージェントから直接呼び出せます。ファイルパスを渡して読み書きもできます。導入方法の詳細は AIエージェントからの使い方 を参照してください。

    導入

    claude mcp add firstch-tools -- npx -y @first-ch/tools-mcp

    呼び出し例

    # 1行のSQLを整形する(予約語を大文字化・句ごとに改行)
    sql_format(text="select a,b from t where a=1 and b=2")
    
    # .sql ファイルを読んで整形し、そのまま書き戻す
    sql_format(path="/tmp/report.sql", outputPath="/tmp/report.sql")
    
    # チームのスタイルに合わせる(スペース2つ・行頭カンマ・予約語は小文字)
    sql_format(text="select a, b from t", indent="2", commaStyle="leading", keywordCase="lower")
    
    # 改行を畳んで1行へ戻す
    sql_format(text="SELECT\n    a\nFROM t", compact=true)

    Other Tools