PREPARATION
受験対策

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

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

例題

3.93

以下の一連の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事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

LPI-Japan
Platinum Sponsors