[SQLServer] SQLの割り算(除算)に注意

SQLで割り算(除算)をすることがある。

消費税だったり、利益率だったり、パーセンテージなものから値を出したいときは多々ある。

消費税だったら、 原価 × ( 消費税率 / 100) で、消費税を出す。

しかし、何も考えずにこの計算式を実行していたら問題だった。

当たり前なのだが、消費税率に該当する部分が、整数型の場合、100%未満の場合は必ず0になる。
なので、ほぼ消費税が0となる。
プログラムで書くときは何となくキャストをしているが、SQL になると忘れていた。

SQLも、プログラムと同じくキャストが必要。
もちろん、パーセンテージを入れる変数が、もともと小数点型であれば問題ない。
しかし、その場合は出力される値が小数点を含む可能性がある。

今回の場合、1円以下の小数点は切り捨てだったので、先に乗算した後、100で除算する方法を選んだ。

ちなみに、パーセンテージが0の場合は、除算するとすべて0となった。
0は何で割っても0という仕様のようだ。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">