使い方
- SQL文をテキストエリアに貼り付ける。複数文(
;区切り)もまとめて整形できる。 - キーワードの大文字・小文字、インデント幅、カンマの位置(後置/前置)を選ぶと、入力するたびに即座に整形結果が更新される。
- 「1行に圧縮する」を有効にすると、改行やインデントを取り払い、ログ貼り付けなどに便利な1行のSQLにまとめられる。
- 「コピー」ボタンで整形結果をそのままコピーできる。
仕組み・根拠
このツールは、SQL標準(ISO/IEC 9075)や各RDBMSの文法を完全に解析する構文解析器ではなく、字句解析(トークナイズ)に基づく整形専用ツールです。まず文字列リテラル('...'。''によるエスケープに対応)、行コメント(--)、ブロックコメント(/* */)、引用符付き識別子("..." `...` [...])を1つのトークンとして正確に切り出し、その中身は一切書き換えません。そのうえで、SELECT・FROM・WHERE・GROUP BY・ORDER BY・HAVING・JOIN・ON・CASE〜END・WITH(CTE)などの主要キーワードの位置に応じて改行とインデントを挿入します。丸かっこは、直前がCREATE TABLE/INSERT INTOの対象名であれば列定義リスト、直後がSELECT/WITHであればサブクエリと判定して展開し、それ以外(COUNT(*)のような関数呼び出しや単純な式のグルーピング)は改行せずそのまま維持します。
現場の落とし穴:このツールはSQLの構文的な正しさを検証しません。かっこの対応が崩れている、キーワードのスペルミスがある、といった不正なSQLでもエラーを出さずに「それらしく」整形しようとします。また、丸かっこの中身がサブクエリか単なる式かの判定はヒューリスティック(経験則)によるもので、特殊な書き方(コメントの中にキーワードに似た文字列がある、独自の方言構文を使っているなど)では意図と異なる改行位置になることがあります。整形後は必ず目視で確認し、本番投入前にはDB側での構文チェック(EXPLAINなど)も行ってください。
よくある質問
Q. 文字列の中に SELECT や -- が含まれていると壊れませんか?
A. 壊れません。文字列リテラル('...')やコメントは最初に1つのトークンとして丸ごと切り出してから処理するため、中身のキーワードらしき文字列が誤って改行・大文字化の対象になることはありません。
Q. ストアドプロシージャや独自関数、方言固有の構文(MERGE文など)にも対応していますか?
A. 一部の主要な構文(SELECT/INSERT/UPDATE/DELETE/CREATE TABLE/JOIN/サブクエリ/CASE/WITH)を対象にした簡易整形です。対応外の構文はキーワードの大文字化と基本的な折り返し以外、期待通りに整形されない場合があります。
Q. なぜ IN (1, 2, 3) のような短いリストは改行されないのですか?
A. IN (...) は中身が SELECT で始まる場合のみサブクエリとして展開し、それ以外の単純な値リストは1行のまま維持する仕様です。長いリストでも意図的に折り返しません。
関連ツール
最終更新・根拠の確認日: 2026-09-10 · カテゴリ: 開発・データ