みなさんこんにちは!フリーランスプログラマーのsatoです。
「IS NULL」と聞いて、プログラムをかじったことがある人なら
しかしSQLには使用環境によって「ISNULL関数」や「IS NULL演算子」が存在します。
※また関数名などは環境によって違います。
しかも機能はそれぞれ違います。
似た名前でややこしいですね…
これらの違いを理解しておかないと、ややこしいことになるため、今回覚えてしまいましょう!それでは早速それぞれの、使用可能環境や特徴・使い方を見ていきましょう!
NULLを判定する「IS NULL演算子」
ではまず「IS NULL演算子」から見ていきましょう。
「IS NULL演算子」とは
「IS NULL演算子」とは、その名の通り「NULLかどうかをチェックしてくれる演算子」です。
主に「WHERE」の中の判定文の中で使用されます。
またこの演算子はOracle・DB2・SQL Server・MySQL・PostgreSQL・Accessなどといった大半の環境で使用可能です。
NULLを探す基本形ですので、しっかり覚えておきましょう。
「IS NULL演算子」の使い方
例えば、userテーブルの、「名前(name)の情報にNULLが入っている人」を探す場合は以下になります。
SELECT * FROM user WHERE name IS NULL;
非常に簡単ですね!
WHERE句の中で、「判定したい要素名」の後ろに「IS NULL」をつけるだけです。
逆の意味の「IS NOT NULL演算子」もある!
逆にNULL以外を探す場合は「IS NOT NULL演算子」を使用しましょう。
SELECT * FROM user WHERE name IS NOT NULL;
先ほどと同じく「判定したい要素名」の後ろに「IS NOT NULL」をつけるだけですね!
NULLに置換をかける「ISNULL関数」
次に「ISNULL関数」についてみることにしましょう。
「ISNULL関数」とは
一言で言えば「NULLの要素に対して指定した文字列で置換をかけてくれる関数」です。
SQL Server・Accessといった一部の環境でしか使えないため注意が必要です。
ですが「Oracle」「mysql」「PostgreSQL」「SQLite」にはそれぞれ別名で同じ機能をもった関数があります。
そちらも合わせて見ていきましょう。
「ISNULL関数」の使い方
基本的な使い方は非常に簡単で、以下の通りです。
ISNULL( [指定する要素], [置換したい文字列] )
第一引数に「NULLをチェックする要素名」。
第二引数に「NULLだった時、何で置換するか」を入力します。
例えばuserテーブルの、名前がNULLの要素に「UNKNOWN」と表示したい場合は、以下の通りです。
SELECT ISNULL(name, 'UNKNOWN') FROM user;
環境ごとの類似関数
それぞれの環境ごとにも、類似関数が存在します。
それぞれ同様の例で見てみましょう。
Oracle:
SELECT NVL(name, 'UNKNOWN') FROM user;
Mysql・SQLite:
SELECT IFNULL(name, 'UNKNOWN') FROM user;
PostgreSQL:
SELECT COALESCE(name, 'UNKNOWN') FROM user;
使用している環境の物だけでも、覚えておけると良いですね!
まとめ
今回は非常にシンプルに「ISNULL関数」と「IS NULL演算子」の二つについて見てきました。
「ISNULL関数」は「NULLの要素に対して、指定した文字列で置換をかけてくれる関数」です。
「IS NULL演算子」は「NULLかどうかをチェックしてくれる演算子」です。
似てはいますが、役割は違いますので、しっかり覚えておきましょう。上手につかってNULLとうまく付き合っていきたいものですね!