検索

キーワード


目次

【SQL】IS NULLについて

  • 公開日:2020-10-30 17:54:11
  • 最終更新日:2020-12-26 22:48:35
【SQL】IS NULLについて

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。駆け出しプログラマーの松下です!

「IS NULL演算子」と「IS NULL関数」について説明します。

SQLについて学び始めたばかりという方の参考になれば幸いです。


例ではMicrosoft SQL Serverを使用し、あらかじめ作成した下記の"employees"テーブルからのデータ取得をします。

employees テーブル


IS NULL演算子とは

NULLは値の未定義を意味する値で、0や空文字ではありません。

値が未定という意味を持っているため、NULL同士でも等しくならず、計算や比較には使えません。

つまりNULLは等号(=)や不等号(<>≦≧)の対象にならないのです。


そのためデータベースでNULLを検索するには、「カラム名=NULL」と指定するのではなく、専用の命令句「IS NULL演算子」を使います。

IS NULL演算子はWHEREなどと組み合わせて使われることが多く、NULLか判定したい列名の後ろにIS NULLをつけます。

SELECT * FROM employees WHERE 名前 IS NULL;

IS NULL演算子でNULLの入ったデータを取得

名前がNULLの2行のデータが取得されました。


IS NOT NULL演算子

逆にNULL以外を探すときにはIS NOT NULL演算子を使います。

SELECT 社員番号,名前,年齢 FROM employees WHERE 名前 IS NOT NULL;

IS NOT NULL演算子でNULLでないデータを取得

名前がNULLでないデータが取得されました。


IS NULL関数とは

IS NULL演算子と紛らわしいものでIS NULL関数があります。

これはNULLを指定した文字列に置き換える関数です。

ISNULL(NULLかチェックしたい要素,置き換えたい文字列) と記述します。

SELECT 社員番号,ISNULL(名前,'new employee') FROM employees;

IS NULL関数の使用例

名前がNULLだったところがnew employeeに置き換わっています。


前述の通りNULLを含むものは集計の対象外になってしまうので、この関数はNULLを含むデータも合わせて集計したいときに活用できます。

SELECT COUNT(名前) AS '数',AVG(年齢) AS '平均' FROM employees;

SELECT COUNT(ISNULL(名前,'new employee')) AS '数'
,AVG(ISNULL(年齢,0)) AS '平均'
FROM employees;

IS NULL関数を使用する前後での集計の変化

NULLのデータが数えられ、年齢のNULLを0に置き換えてるので平均はISNULLを使ってない方より小さくなりました。


類似の関数

IS NULL関数は、Microsoft SQL Serverなど一部の環境でしか使えませんが、それぞれの環境に別名で同様の機能の関数があります。


・NVL

Oracleで使用します。

NVL(NULLかチェックしたい要素,置き換えたい文字列)

またNVL2というNULLでない場合にも置き換える値を設定できる関数もあります

NVL2(NULLかチェックしたい要素,要素がNULLでないとき置き換えたい文字列,要素がNULLのとき置き換えたい文字列)


・IF NULL

MYSQL、SQLiteで使用します。

IFNULL(NULLかチェックしたい要素,置き換えたい文字列)


・COALESCE

PostgreSQLをはじめ主要DBMSで使用できます。

COALESCE(NULLかチェックしたい要素,置き換えたい文字列)
COALESCE(カラム1,カラム2,カラム3,カラム4,,置き換えたい文字列)

後者のように、カラム1がNULLならカラム2の値を表示し、カラム2がNULLならカラム3の値を…、全てNULLなら最後に記述した値に置き換えるといった使い方もできます。



【著者】

松下

今年文系未経験からプログラマとなりました。 同じ初心者の方に分かりやすいよう簡潔な記事を心がけていきます。 趣味はサッカー観戦と洋服です。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事