01
1. SQLを整形する理由
1行で書かれたSQLやORMが生成したSQLは、結合(JOIN)が増えるほど読みにくくなります。句(SELECT、FROM、WHERE、JOIN、GROUP BY、ORDER BYなど)ごとに改行してインデントを揃えると、どのテーブルをどの条件で結合しているか、WHERE条件は何かが一目で把握でき、コードレビューやデバッグが速くなります。
SQLクエリを句(clause)ごとに改行・インデントして読みやすく整形します。逆に、ログ送信や保存用に1行へ圧縮(minify)することもできます。キーワードの大文字変換は任意です。
1行で書かれたSQLやORMが生成したSQLは、結合(JOIN)が増えるほど読みにくくなります。句(SELECT、FROM、WHERE、JOIN、GROUP BY、ORDER BYなど)ごとに改行してインデントを揃えると、どのテーブルをどの条件で結合しているか、WHERE条件は何かが一目で把握でき、コードレビューやデバッグが速くなります。
SELECT/FROM/WHERE/JOIN系/GROUP BY/ORDER BY/HAVING/LIMITなどの主要な句の前で改行し、AND/ORは1段階インデントして条件を区別します。カンマ区切りのカラムリストはそれぞれ新しい行に整列され、括弧内の内容(サブクエリなど)にはさらに1段階のインデントが追加されます。このツールは完全なSQLパーサーではなくトークンベースの整形ツールのため、非常に複雑にネストしたサブクエリやベンダー固有の構文は、結果を確認のうえ手動で微調整することをおすすめします。
圧縮(minify)はコメントを削除し、不要な空白・改行をなくして1行にまとめます。ログにクエリを残したり、ストアドプロシージャ・マイグレーションスクリプトのサイズを縮小したり、他のツールに貼り付けるために1行が必要な場合に便利です。文字列リテラル(引用符で囲まれた値)の内容はそのまま保持されるため、データの値が壊れることはありません。