今回は、Silverの「開発/SQL - SQLコマンド(SELECT文)」からの出題です。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2018年11月27日
最初のCREATE TABLEでテーブルsampleを作成し、次のINSERTでデータを5行、挿入しています。最後のSELECTのcount(*)は行数を返す関数なので、WHERE句の条件にマッチする行がいくつあるか、が問題になります。
WHERE句の条件式 val <> 'abc' は列valの値が 'abc' ではない、を意味します。idの値が2の行がこの条件にマッチしないのは自明ですね。この比較条件では、文字列は完全一致するかどうか、で判定されるため、'abcde' のように部分的に一致しても、'abc' ではない、ということになります。また、文字列の大文字と小文字は区別されるため、'ABC' は 'abc' とは異なる文字列とされます。すなわち、id の値が1、3、4の行は、いずれもWHERE句の条件式にマッチします。
問題はval の値が null の場合です。nullの意味にはさまざまな解釈の仕方がありますが、値が不明である、と考えるとわかりやすいでしょう。val の値が不明なので、val <> 'abc' の結果も真偽が不明となり、WHERE句の条件にマッチしない、と判定されます。この行は、val = 'abc'、val <> 'abc' のいずれの条件式にもマッチしないので注意が必要です。
以上から、WHERE句の条件にマッチするのは3行ですので、countとして返される値、つまり正解は3です。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.