Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのformatter(整形ツール)についてまとめています。

SQLのformatterは、コードを見やすく整形してくれるツール

SQL formatterは、整形ツールの一種で、複雑なSQLを見やすく整形してくれます。以下のようなSQLを整形してみましょう。

SELECT i.obj#, i.samplesize, i.dataobj#, Nvl(i.spare1, 
i.intcols), i.spare6, Decode(i.pctthres$, NULL, 
NULL, MOD(Trunc(i.pctthres$ / 256), 256)), ist.cachedblk, 
ist.cachehit, ist.logicalread FROM ind$ i, 
ind_stats$ ist, (SELECT enabled, Min(cols) 
unicols, Min(To_number(Bitand(defer, 1))) 
deferrable#, Min(To_number(Bitand(defer, 4))) 
valid# FROM cdef$ WHERE obj# = :1 AND enabled > 
1 GROUP BY enabled) c WHERE i.obj# = c.enabled(+) 
AND i.obj# = ist.obj#(+) AND i.bo# = :1 ORDER 
BY i.obj#

整形には、Instant SQL Formatterというオンラインツールを使用しました。

結果は、以下のようになります。サブクエリなどを使った入れ子も完璧に解釈されて、整形されています。

SELECT i.obj#,
       i.samplesize,
       i.dataobj#,
       Nvl(i.spare1, i.intcols),
       i.spare6,
       Decode(i.pctthres$, NULL, NULL,
                           MOD(Trunc(i.pctthres$ / 256), 256)),
       ist.cachedblk,
       ist.cachehit,
       ist.logicalread
FROM   ind$ i,
       ind_stats$ ist,
       (SELECT enabled,
               Min(cols)                        unicols,
               Min(To_number(Bitand(defer, 1))) deferrable#,
               Min(To_number(Bitand(defer, 4))) valid#
        FROM   cdef$
        WHERE  obj# = :1
               AND enabled > 1
        GROUP  BY enabled) c
WHERE  i.obj# = c.enabled(+)
       AND i.obj# = ist.obj#(+)
       AND i.bo# = :1
ORDER  BY i.obj#

【関連記事】
SQL formatter オンラインで使える無料整形ツール 3選 

この整形ツールは、オンライン(ブラウザにコピペで利用できるネット上のサービス)なのでネットに接続した環境でしか使うことができません。しかし、オンラインの整形ツールは日々進化し続けていて、バグ・不具合報告なども反映されて、頻繁にアップデートされるため、高機能な整形ツールに仕上がっています。

整形時に、SQLのキーワードやテーブル名、関数名の1文字目を大文字にするとか、カンマを行末にするとか、整形上の細かい設定も可能ですし、MySQL、SQL Server、Oracle、DB2などDBMSごとの文法の違いも指定可能。SQLだけではなく、PHPやJavaなどへの埋め込み用コードも出力可能です。

オンラインのSQL formatterとしては、Instant SQL Formatterをブックマークしておけば間違いないでしょう。

参考)Instant SQL Formatter

オフラインのSQL formatter

しかし、開発現場ではネット接続が許可されていない環境もあります。そんな場合に役立つのがオフラインで利用可能な整形ツール。

中でも、MicrosoftのVisual Studio Codeは優秀です。

上記のオンラインのSQL formatterで使った複雑なSQLを整形してみましょう。

select
    i.obj #,
    i.samplesize,
    i.dataobj#,
    nvl(i.spare1, i.intcols),
    i.spare6,
    decode(
        i.pctthres$,
        null,
        null,
        mod(trunc(i.pctthres$ / 256), 256)
    ),
    ist.cachedblk,
    ist.cachehit,
    ist.logicalread
from
    ind$ i,
    ind_stats$ ist,
    (
        select
            enabled,
            min(cols) unicols,
            min(to_number(bitand(defer, 1))) deferrable#,
            min(to_number(bitand(defer, 4))) valid#
        from
            cdef$
        where
            obj# = :1
            and enabled > 1
        group by
            enabled
    ) c
where
    i.obj# = c .enabled(+)
    and i.obj# = ist.obj#(+)
    and i.bo# = :1
order by
    i.obj#

【関連記事】
SQL 整形ツール 美しいコードが出力できるテキストエディタはどれ?

オンラインの整形ツールとは、改行のタイミングがやや異なる部分もありますが、整形結果としては満点と言えるでしょう。実は、オフライン整形ツールは、テキストエディタに付属の機能などを試用したところ、VisualStudioCode以外はイマイチな結果でした。複雑なSQLを指定すると、SQLの解釈間違いなどを起こして、整形結果がおかしくなってしまうんですね。

圧倒的な利用者を誇るVisualStuioCodeだからこそ、整形機能もここまでバージョンアップして高性能になっているのかも知れません。

オフラインのSQL formatterとしては、VSCODE(Visual Studio Code)が一押しです。

まとめ

ポテパンダの一言メモ
  • SQL formatterは、SQLコードを整形して見やすくするツール
  • オンラインのSQL formatterは、Instant SQL formatterがおすすめ
  • オフラインのSQL formatterは、Visual Studio Codeがおすすめ

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。