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

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

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

例題

Q. 以下の一連のSQL文を実行した。
create table sample (id integer primary key, val varchar(10));
insert into sample (id, val) values (1, 'ABC'), (2, 'abc'), (3, 'ABCDE'), (4, 'abcde'), (5, null);
select count(*) from sample where val <> 'abc';
最後のSELECT文がcountとして返す値は何か。値を答えよ。

※この例題は実際の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事務局ではお応えできませんのでご了解ください。

ページトップへ