SQL フォーマッター

概要

SQLフォーマッターは、圧縮されたり雑然としたSQLクエリを読みやすいコードに再インデント・整形します。19種のデータベース方言に対応しており、クエリを貼り付けて方言を選ぶだけで結果が即座に表示されます。キーワードの大文字/小文字、インデントスタイル、改行位置はすべて設定可能です。

方言の選択が整形精度に影響する

方言を間違えてもSQLの実行自体には影響しませんが、整形の正確さが下がります。

MySQL / MariaDB

  • バッククォート識別子(`table`)が正しく認識される
  • GROUP_CONCATなどMySQL固有の関数が誤解釈されない
  • AUTO_INCREMENTENGINE=InnoDB句がエラー扱いにならない

PostgreSQL

  • ダブルクォート識別子("table")が標準として処理される
  • RETURNINGON CONFLICT DO UPDATEが正しく整形される
  • 配列演算子&&@>が算術演算子と混同されない

SQL Serverには汎用sqlではなくtransactsqlを選んでください。TOPWITH(NOLOCK)などT-SQL固有の構文をより正確に処理します。BigQueryは、バッククォートで囲まれたプロジェクトパスを含むクエリを整形する場合、BigQuery方言を明示的に選択する必要があります。

整形前後の比較

SELECT * FROM users WHERE age > 18 AND status='active' OR role IN ('admin','moderator') ORDER BY created_at DESC LIMIT 10

標準インデントスタイルで整形した結果:

SELECT
  *
FROM
  users
WHERE
  age > 18
  AND status = 'active'
  OR role IN ('admin', 'moderator')
ORDER BY
  created_at DESC
LIMIT
  10

インデントスタイルと式の幅

3つのスタイルが選べます:標準(句を左揃え)、表形式左(キーワードを右揃えにして列を縦に揃える)、表形式右(キーワード左揃えでコンパクト)。式の幅(デフォルト50文字)は括弧内の式がいつ折り返されるかを制御します。IN (...)リストの各要素を1行ずつ表示したい場合は値を小さくすると、コードレビューでのdiff確認が楽になります。

AND / ORの改行位置

デフォルトではANDORは次の行の先頭に置かれます(先頭スタイル)。チームの規約で演算子を行末に置く場合は、「論理演算子の改行」オプションを「後置」に切り替えてください。複数ステートメント間の空行数は1または2に設定でき、バッチスクリプトの区切りに使えます。

すべての整形処理はブラウザ内でローカルに実行されます。SQLコードはサーバーに送信されません。