今回は、Silverの「開発/SQL - 組み込み関数(算術演算子)」からの出題です。
SELECT 5%2; の結果は 1 である。
SELECT 5/NULL; を実行すると、0で除算のエラーとなる。
SELECT 5/0; を実行すると、0で除算のエラーとなるが、SELECT NULL/0; なら結果は NULL となる。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2013年2月27日
四則演算の +-*/ 演算子はどのRDBMSでも実装されていますが、それ以外の演算子についてはRDBMSの種類によって使われ方が違う場合があるので注意が必要です。
PostgreSQLでは四則演算以外にも多くの算術演算子が実装されており、例えば剰余(割り算の余り)を求める %、累乗(XのY乗)を求める ^ といった、C言語などで見慣れた演算子を使うことができます。
通常の割り算は / 演算子を使いますが、整数同士の割り算では、結果も整数(小数点以下は切り捨て)になります。どちらか一方が実数の場合には、結果も実数(切り捨てない)になります。つまり、5/2 は結果の小数部が切り捨てられて 2 になりますが、5/2.0 (あるいは 5.0/2)の場合は 2.5 になります。
剰余を求める場合、MOD関数を使わなければならないRDBMSもありますが、PostgreSQLでは、MOD関数、%演算子のいずれでも利用することができます。5%2は割り算の余りを求めますから、結果は 1 になります。
2項演算の一方の項がNULLの場合、その結果は無条件にNULLになります。NULLと0はまったく異なるものなので注意してください。NULLで割り算すると結果はNULLになります。0で割り算すると、通常はエラーになりますが、NULL/0 の場合は、除算のエラーを起こさずにNULLが返されます。
累乗を求める場合、POW関数、あるいはPOWER関数を使わなければならないRDBMSもありますが、PostgreSQLではこれらに加えて ^ 演算子を使うことができます。5^2 は5の2乗、つまり 5*5 なので結果は25 になります。
誤っているものを選ぶ問題ですから、正解は C です。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.