SQLを読みやすく整形
ログからコピーしたクエリ、ORMが生成したクエリ、あるいは急いで書いたクエリは、1行の長い文字列になりがちで、読みにくくデバッグも困難です。このSQLフォーマッターは、クエリを SELECT、FROM、JOIN、WHERE、GROUP BY、ORDER BY などの句ごとに明確に分割します。各カラムや条件を改行して配置し、サブクエリや CASE 式のインデントを統一します。これにより、コードレビューやバージョン管理での差分比較、チームメンバーとの共有が容易になります。
主な機能
- 12種類のSQL方言に対応: 標準SQLをはじめ、MySQL、PostgreSQL、SQL Server、Oracle、BigQuery、Snowflakeなどに対応。
- キーワードの大文字・小文字: 大文字(UPPER)、小文字(lower)、または入力のまま維持。キーワード、データ型、関数に適用されます。
- インデント: 2スペース、4スペース、またはタブから選択可能。
- 複数ステートメント: セミコロンで区切られた複数のクエリに対応。
- コメントの保持:
--(行コメント)と/* */(ブロックコメント)の両方をそのまま保持します。 - コピー&ダウンロード: 整形結果をクリップボードにコピー、または
.sqlファイルとしてダウンロードできます。 - プライバシー保護: フォーマッターはブラウザ内でローカルに動作するため安全です。
変換前と変換後
次のようなクエリが:
select u.id, u.name, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.status = 'active' group by u.id, u.name order by orders desc;
このように整形されます:
SELECT
u.id,
u.name,
COUNT(o.id) AS orders
FROM
users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE
u.status = 'active'
GROUP BY
u.id,
u.name
ORDER BY
orders DESC;
SQLスタイルのコツ
- 1行に1つの句を記述する。 主要な句を改行して記述することで、クエリの構造が一目でわかるようになります。
- 意味のあるエイリアスを使用する。 短いクエリでは
uやoのような短いエイリアスでも問題ありませんが、長いレポートではわかりやすい名前が役立ちます。 - カラム名を修飾する。 JOIN(結合)時は曖昧さを避けるため、(
user_idではなくorders.user_idのように)テーブル名を含めて記述します。 - フォーマットを統一する。 プロジェクト全体で書式を統一することで、差分(diff)を確認する際に、空白文字のズレではなく実際の変更箇所が明確になります。
関連ツール
クエリ結果を扱う作業には、エクスポートしたデータを変換できるCSV JSON 変換、APIレスポンスを見やすく整形するJSONフォーマッター、2つのクエリの変更点を比較できる差分チェッカーが便利です。