HOME > 受験対策 > サンプル問題/例題解説 > Silverの例題解説「開発/SQL」 > SQLコマンド(SELECT文)

Silverの例題解説「開発/SQL - SQLコマンド(SELECT文)」

Yahoo!ブックマークに登録

今回は、Silverの「開発/SQL - SQLコマンド(SELECT文)」からの出題です。

例題

次のSQL文でテーブルを作成し、10行のデータを挿入した。

CREATE TABLE test(id INTEGER PRIMARY KEY, val INTEGER);
ここで、次のSELECT文を実行したが、9行しか返されなかった。
SELECT * FROM test WHERE val >= 0 OR val < 0;
10行を挿入したはずなのに、合わせて9行しかないのはなぜか。以下の空欄に入る言葉を答えよ。

valの値が_____である行があるから。

※この例題は実際のOSS-DB技術者認定試験とは異なります。

解答と解説

val列に普通の整数値が入っていれば、WHERE句の val >=0 あるいは val < 0のいずれかの条件に合いますから、このSELECT文で返されるはずです。 データベースでは、列に値が入っていない、つまりNULLであるという状態があり、valがNULLの場合、val >= 0 も val < 0 もいずれも真にならないため、例題のSELECTでは行が返りません。

従って、正解は NULL です。

WHERE条件などを考える時、NULL値の可能性を考慮しないと、思わぬ結果になることがありますので、常に注意する必要があります。

  • 今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
  • 採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
  • ご質問・ご意見はこちら
  • ※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

ページトップへ