何ができるか
SQL フォーマッターは、1 行に詰め込まれた長いクエリを、インデントのそろった読みやすいクエリに変換します。各句(SELECT、FROM、WHERE、GROUP BY、ORDER BY)はそれぞれ新しい行から始まり、選択する列や条件は 1 行に 1 つずつ並び、JOIN は結合対象のテーブルの下にそろい、サブクエリは括弧の内側でインデントされます。
整形された SQL は、プルリクエストでのレビュー、クエリが間違った行を返すときのデバッグ、ドキュメントへの貼り付けがしやすくなります。すべてが 1 行になっている ORM のログやアプリケーションのエラーメッセージからクエリをコピーしたときにも役立ちます。
使い方
- 入力 欄に 1 つ以上の SQL 文を貼り付けるか、
.sqlファイルをドロップするか、サンプル をクリックします。 - 使っているデータベースの 方言 を選びます。
- キーワード を大文字、小文字、入力のままのいずれにするか選びます。
COUNTなどの関数名も同じ設定に従います。 - インデント をスペース 2 つ、スペース 4 つ、タブから選びます。
- 結果をコピーするか、
.sqlファイルとしてダウンロードします。ショートカット:Ctrl/Cmd+Enter で整形、Ctrl/Cmd+Shift+C でコピー。
セミコロンで区切られた複数の文は、空行で区切って出力されます。コメントは元の位置に残ります。
例
select u.id, count(o.id) as orders from users u left join orders o on o.user_id = u.id group by u.id
は次のようになります。
SELECT
u.id,
COUNT(o.id) AS orders
FROM
users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY
u.id
ヒント
キーワードを大文字にすると、句がテーブル名や列名から際立ちます。これはチームで最も一般的な規約です。チームで小文字の SQL を書いているなら、小文字を選べばクエリ全体がそろいます。フォーマッターが予期しないトークンを報告した場合は、方言が正しいか確認してください。たとえば、バッククォートで囲んだ名前は MySQL では有効ですが、標準 SQL では無効です。
よくある質問
› SQL はサーバーに送信されますか?
いいえ。フォーマッターはブラウザ内で動作するため、テーブル名や顧客データ、ビジネスロジックがわかるクエリも端末の外に出ることはありません。
› どの SQL 方言に対応していますか?
標準 SQL、MySQL、MariaDB、PostgreSQL、SQLite、SQL Server(T-SQL)、Oracle(PL/SQL)、BigQuery、Snowflake、Redshift、Spark SQL に対応しています。正しい方言を選ぶと、バッククォートの識別子、:: によるキャスト、角括弧の名前など、方言固有の構文を正しく扱えます。
› 整形するとクエリの動作は変わりますか?
変わりません。変わるのは空白と、選択した場合のキーワードと関数名の大文字・小文字だけです。識別子、文字列リテラル、コメントは書かれたとおりに保持されます。
› 「Unexpected end of input」と表示されるのはなぜですか?
たいていは括弧か引用符が閉じられていません。エラーはクエリの末尾を指すので、対になる相手のない最後の ( や ' を探してください。