🗃️ SQL フォーマッター

入力
出力

乱れたSQLクエリを貼り付けると、読みやすいインデント付きのレイアウトに整形します。SELECT・FROM・WHERE・JOINなどのキーワードは大文字化され、主要な句ごとに改行されます。圧縮モードに切り替えると、クエリを1行にまとめられます。このツールはパターンマッチングによるベストエフォートの整形であり、完全なSQLパーサーではないため、標準的なSELECT/INSERT/UPDATE/DELETE文で最もよく機能します。

使い方

  1. 整形または圧縮したいSQLクエリを入力欄に貼り付けます。
  2. 「整形」または「圧縮」ボタンを押します。
  3. 結果欄に整形・圧縮後のクエリが表示されます。
  4. 「コピー」ボタンで結果をクリップボードにコピーします。

計算の仕組み

このツールは、完全なSQLパーサーではなく、キーワードのパターンに一致する部分を見つけて改行とインデントを入れる方式で整形しています。SELECT・FROM・WHERE・JOIN・GROUP BY・ORDER BY などの主要な句を大文字にして行頭に置き、SELECT の列や JOIN の ON 条件は字下げして並べます。 「INSERT INTO」「ORDER BY」のように複数の単語からなるキーワードもあるため、長いキーワードから順に照合しています。短い「IN」が先に一致して「INSERT」の一部を誤って区切ってしまう、といったことを防ぐためです。 圧縮モードでは、改行と余分な空白を取り除いて1行にまとめます。ログに出力したり、プログラムの文字列に埋め込んだりするときに便利です。

計算例

次の1行のSQLを整形した場合 select id, name from users u join orders o on u.id = o.user_id where o.total > 100 order by o.total desc 整形後 SELECT id, name FROM users u JOIN orders o ON u.id = o.user_id WHERE o.total > 100 ORDER BY o.total desc 主要な句のキーワードは大文字になりますが、句のキーワード一覧に含まれない desc などは入力したまま残ります。

使用上の注意

  • 完全なSQLパーサーではありません。サブクエリの深い入れ子や、ベンダー固有の構文は崩れて整形される場合があります。
  • 文字列リテラルの中にキーワードと同じ単語があると、その位置で改行されることがあります。
  • 整形しても実行結果は変わりませんが、実行前には内容を確認してください。
  • 入力したSQLはブラウザ内で処理され、外部に送信されることはありません。

よくある質問

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

SELECT・JOIN・WHERE・GROUP BYなど、一般的なANSI SQL構文にはある程度対応していますが、完全なパーサーではないため、特定のベンダー固有の構文は正しく整形されない場合があります。

入力したSQLはサーバーに送信されますか?

いいえ。整形処理はすべてブラウザ内で行われ、アップロードや保存は一切行われません。

長い1行のクエリを見やすくできますか?

はい。ツールやログから出力された改行のない長いSQLクエリを貼り付けて整形すれば、句ごとに改行された読みやすいレイアウトになります。

INSERT文やUPDATE文にも対応していますか?

はい。標準的なSELECT・INSERT・UPDATE・DELETE文で最もよく機能するよう設計されています。

サブクエリを含む複雑なSQLも正しく整形されますか?

基本的なパターンマッチングによる整形のため、ネストの深いサブクエリや特殊な構文では意図通りにならない場合があります。結果を確認しながらご利用ください。