とあるITエンジニアたちの備忘録

新米エンジニア5人がお送りする、ちょっとためになる話

WHERE句の条件式 ~比較演算子~ #3

みなさん、こんにちは。

どうも、さいばーきゃっとです。

 

今回は、前回解説した記事の続きになります。

 

前回の記事

itsoldier0901.hatenablog.com

 

今回は、SQL特有の演算子である「IS NULL」について、紹介していこうと思います。

 

そもそも「NULL」って何?

「NULL」の読み方は、ヌルもしくはナルです。

「NULL」とは、何のデータも格納されていない状態のことを示します。

 

以下の表をご覧ください。

f:id:cloudy0901:20160705013314p:plain

 

上記の表では、小林四朗の「取得資格」の欄(赤枠)が空欄になっていますよね?

このように、欄に値(文字や数値)が格納されず、空欄になっていることを、「NULL」と定義しています。

 

※)「NULL」は、あくまで空欄を示します。空白(スペース)や数値の0とは、区別されるので、注意しましょう。

 

IS NULL

 「IS NULL」演算子を使用すると、列に「NULL」(データ(値)が格納されていない欄)が含まれている行を選択することができます。

 

では、実際に「IS NULL」演算子を使用して、「NULL」を選択してみましょう。

 

以下の成績表から、資格を取得していない生徒を選択します。

f:id:cloudy0901:20160705015008p:plain

 

構文は、以下になります。

f:id:cloudy0901:20160705015139p:plain

 

すると、以下の結果になります

f:id:cloudy0901:20160705015214p:plain

 

注意

「NULL」は、特殊な値であるため、列から「NULL」を検索する際は、「IS NULL」演算子でしか検索することができません。

等号(=)や不等号(≠,≦)などでは検索することできませんので、注意しましょう。

 

例えば、等号(=)を使用して、列の「NULL」を検索した時は、以下のような結果になります。

f:id:cloudy0901:20160705020001p:plain

ここで注意すべき点は、上記のSQL文では「エラーにならない」ということです。

「NULL」は、どのような値に対しても、等しいまたは等しくない評価ができないため、該当する値が選択されず、何も選択されない結果になります。

 

いかがだったでしょうか?

3回に渡って、SQL特有の演算子について、紹介してきましたが、「BETWEEN....AND....」、「IN (値リスト)」、「LIKE パターン」、「IS NULL」の4つは、非常に大事なので、使い方を覚えておきましょう。