SQL整形(キーワード大文字化・インデント・圧縮)

SELECT/INSERT/UPDATE/DELETE/CREATE TABLE/JOIN/サブクエリ/CASE/WITHに対応した簡易SQL整形ツール。キーワードの大文字小文字統一、インデント幅、カンマの前置・後置、1行への圧縮を選べます。文字列やコメントは壊しません。

整形結果


これは完全なSQLパーサではなく、整形(見た目の調整)専用の簡易ツールです。SQLの構文的な正しさは検証しません。文字列リテラル・コメント・引用符付き識別子の中身は書き換えません。処理はすべてブラウザ内で行われます。

使い方

  1. SQL文をテキストエリアに貼り付ける。複数文(;区切り)もまとめて整形できる。
  2. キーワードの大文字・小文字、インデント幅、カンマの位置(後置/前置)を選ぶと、入力するたびに即座に整形結果が更新される。
  3. 「1行に圧縮する」を有効にすると、改行やインデントを取り払い、ログ貼り付けなどに便利な1行のSQLにまとめられる。
  4. 「コピー」ボタンで整形結果をそのままコピーできる。

仕組み・根拠

このツールは、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 · カテゴリ: 開発・データ