SQLを安全に整形し、結果を確認する方法
開発者、分析担当者、学習者が詰まったSQLを読みやすくするためのツールです。空白と任意のキーワード表記だけを変え、SQLの正しさを保証したり実行したりはしません。
使い方
- SQLを貼り付け、実際に実行するデータベース方言、インデント、キーワード表記を選びます。標準SQLは自動判定ではありません。
- 「SQLを整形」またはCtrl/Command+Enterを押し、出力を比較してからコピーします。入力変更後は再整形してください。
変わる部分と保持する部分
句の改行とネストの字下げを行います。識別子、文字列、数値、コメント、対応するプレースホルダーは内容として保持します。
整形は意味の同一性の証明ではありません。移行SQL、ストアドプロシージャ、生成SQLは原文と比較してください。
方言の選び方
SQL製品は引用符、関数、手続きブロック、演算子が異なります。対象製品を選んでください。
失敗時は入力を残し、方言を直し、{{ column }}のようなテンプレート構文を分けて確認します。
出力の利用
エディターやdiffにコピーするとJOINや条件の構造を読みやすくできますが、レビューやlintの代わりではありません。
アカウント、履歴、ダウンロード、DB接続はありません。タブを閉じる前に元のSQLを別途保存してください。
具体例2件
JOIN・文字列・コメント・名前付きパラメーター
:minimumと文字列を保持したまま句を整形します。
select u.id,u.name from users u -- active accounts
join orders o on o.user_id=u.id where u.status='active user' and o.total>:minimum order by o.created_at desc;位置パラメーターとサブクエリ
$1を保持し、PostgreSQLへ接続せずサブクエリを字下げします。
select * from events where account_id=$1 and created_at>(select max(created_at) from archive);制限とよくあるエラー
- 上限は100,000文字です。大きいスクリプトは文単位で分割してください。
- 空入力や未対応構文でも入力は消しません。
- 実行、スキーマ検証、最適化、方言変換、危険SQL検出は行いません。
- テンプレートと手続きSQLは手動比較が必要です。
- コピーできない場合は表示結果を選択して手動コピーします。
よくある質問
SQLは送信・実行されますか?
いいえ。このタブ内で整形し、DBには接続しません。
どの方言を選びますか?
実際に実行するDBを選び、標準SQLは共通構文だけに使います。
コメントやパラメーターは保持されますか?
対応文法では保持されます。独自テンプレートは確認してください。
整形すると安全・高速になりますか?
いいえ。見た目と安全性・性能は別の確認です。
失敗する理由は?
方言違い、または未対応の製品固有/テンプレート構文が主な原因です。