ToolConvoyToolConvoyv2.6
DEV

SQL フォーマッター — SQL クエリを整形・美化

カスタマイズ可能な indent、キーワードの大文字・小文字、方言サポートで SQL クエリを整形・美化できます。ブラウザ内で動作し、アップロードは不要です。

● ローカル動作 · タブ内で生成ページ読み込み以降のツールによる通信:0件

SQL は普遍的なクエリ言語ですが、整形されていない SQL は普遍的なコードレビューの不満です。サブクエリ、ウィンドウ関数、CTE を含む複数テーブルの JOIN は、統一された空白の規則がなく、UPPER、lower、Mixed が混在したキーワード表記のまま 30 行にも及ぶことがあります。フォーマッターはこの問題の機械的な部分、つまり SQL の解析、キーワード・識別子・リテラル・演算子の識別、一定の indent・改行・大文字・小文字への書き換えを解決します。整形後も同じクエリであり、データベースは同一に実行しますが、可読性が高く、diff に適し、スタイルガイドに準拠した形で貼り付けられます。フォーマッターはブラウザ内で実行されるため、SQL がデバイスから離れることはありません。クエリにビジネスロジックを示すテーブル名、列名、JOIN 条件が含まれる場合に特に役立ちます。

広告

使い方

  1. SQL を貼り付ける

    SQL クエリ、スクリプト、または DDL 文を貼り付けます。フォーマッターが SQL を解析し、一定の indent、改行、キーワードの大文字・小文字で書き直します。

  2. 整形オプションを選択する

    indent の幅、キーワードの大文字・小文字(upper / lower / capitalize)、カンマの位置(先頭 / 末尾)、方言のヒント(PostgreSQL、MySQL、SQLite、T-SQL、Standard SQL)を選択します。

  3. 整形済みの SQL をコピーする

    整形結果をクリップボードにコピーします。コメント、文字列リテラル、クエリ構造は保持され、変更されるのは空白とキーワードの大文字・小文字だけです。

よくある質問

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

PostgreSQL、MySQL、SQLite、Microsoft T-SQL、Standard SQL の方言ヒントに対応しています。方言によってキーワードの認識と関数名の大文字・小文字が変わりますが、構文は検証しません。構文の検証はパーサーの役割であり、フォーマッターの役割ではありません。

クエリの意味は変わりませんか?

いいえ。変更されるのは空白とキーワードの大文字・小文字だけです。文字列リテラル、識別子、数字、演算子はそのまま保持されます。コメントも変更されません。どのデータベースでも、整形前後のクエリは同じクエリプランを生成します。

サブクエリと CTE はどのように indent されますか?

サブクエリは親要素より 1 レベル深く indent されます。CTE(WITH 句)は CTE 名を 1 行に配置し、本体を indent して整形します。ネストされた CTE と深くネストされたサブクエリは、ネストの深さに応じて indent されます。

DDL 文を整形できますか?

はい。CREATE TABLE、ALTER TABLE、CREATE INDEX などの DDL 文を整形し、スキーマオブジェクトを揃えます。CREATE TABLE の列定義はテーブル名の下に indent されます。

制限事項

  • 構文検証なしフォーマッターは空白とキーワードの大文字・小文字を書き換えます。SQL が有効か、参照されたオブジェクトが存在するかは確認しません。無効な SQL もエラーなく整形され、実行できない出力になる場合があります。
  • クエリの最適化なし空白と大文字・小文字を除けば、出力される SQL は入力と構文的に同一です。フォーマッターはパフォーマンス向上のためにクエリを書き換えません。
  • ストアドプロシージャ本体は未整形CREATE PROCEDURE、CREATE FUNCTION、匿名ブロックの本体は文字列リテラルとして扱われ、変更されません。外側の DDL 構造は整形されます。

プラットフォーム別の注意点

macOS
ターミナル、ログファイル、コードレビューコメントからコピーした SQL を一度だけ整形する場合は、ブラウザツールが便利です。
Web
クライアント側で実行されます。貼り付けた SQL がローカル環境の外へ送信されることはありません。
広告
広告