MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでNULLの値を検索・取得する方法:IS NULL演算子の使い方

MySQLでは、NULLが格納されているレコードを取得したい場合、通常の比較演算子(=)ではなく、IS NULL演算子を使用します。これは、NULLは「値が存在しない」ことを表す特殊な状態であり、= NULLのような等価比較では正しく判定できないためです。

この記事では、実際にテーブルを作成し、IS NULLを使ってNULLのレコードを取得する手順を解説します。

1. サンプルテーブルの作成

まず、従業員名と年齢を格納するテーブルを作成します。

mysql> create table DemoTable
(
    EmployeeName varchar(100),
    EmployeeAge int
);
Query OK, 0 rows affected (0.59 sec)

2. テストデータの挿入

次に、INSERT文を使っていくつかのレコードを挿入します。ここで意図的に「Bob」の年齢をNULLにしている点に注目してください。

mysql> insert into DemoTable values('Chris',32);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('David',45);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('Bob',NULL);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Sam',28);
Query OK, 1 row affected (0.14 sec)

3. 全レコードの確認

SELECT文でテーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。「Bob」のEmployeeAgeだけがNULLになっています。

+--------------+-------------+
| EmployeeName | EmployeeAge |
+--------------+-------------+
| Chris        |          32 |
| David        |          45 |
| Bob          |        NULL |
| Sam          |          28 |
+--------------+-------------+
4 rows in set (0.00 sec)

4. IS NULLでNULLのレコードを取得する

それでは、EmployeeAgeがNULLであるレコードを取得してみます。WHERE EmployeeAge IS NULLという条件を指定します。

mysql> select *from DemoTable where EmployeeAge IS NULL;

実行結果:

+--------------+-------------+
| EmployeeName | EmployeeAge |
+--------------+-------------+
| Bob          | NULL        |
+--------------+-------------+
1 row in set (0.00 sec)

このように、NULLが含まれるレコード「Bob」だけを正確に抽出できました。

補足:NULL以外のレコードを取得するには

逆に、NULLではないレコードを取得したい場合は、IS NOT NULL演算子を使用します。

mysql> select *from DemoTable where EmployeeAge IS NOT NULL;

まとめ

  • NULLの判定には IS NULL を使う(= NULL は機能しない)
  • NULL以外の判定には IS NOT NULL を使う
  • NULLは「不明な値」を意味するため、通常の比較演算子では正しく評価されない

データベース操作においてNULLの扱いは非常によく遭遇する場面です。IS NULL / IS NOT NULLの使い方をしっかり覚えておきましょう。

  1. MySQLのLIKEクエリで「%」を含む列値を検索する方法【エスケープ処理の基本】

    MySQLのLIKEクエリで「%」を含む値を検索するには?MySQLでは、「%」はLIKE句におけるワイルドカードとして機能するため、そのまま検索することはできません。「%」という文字そのものを含む列値を検索したい場合は、バックスラッシュ(\)によるエスケープ処理が必要です。基本構文「%」を含む列値を検索する場合の構文は以下の通りです。select * from yourTableNamewhere yourColumnName LIKE \%%;ポイントは、検索対象の「%」の直前に「\(バックスラッシュ)」を付けることです。これにより、ワイルドカードではなく通常の文字として扱われます。実際に

  2. MySQLで複数のカラムにNULL値を含むレコードを検索する方法

    はじめにMySQLで複数のカラムの中にNULL値が1つでも含まれているレコードを抽出したい場合、GREATEST()関数を活用するのが効果的です。GREATEST()は引数の中から最大値を返す関数ですが、引数のいずれかにNULLが含まれている場合、結果もNULLを返すという特性があります。この特性を利用すれば、複数カラムにわたるNULL値のチェックをシンプルな条件式で実現できます。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、NULL値を含むレコードを検索する手順を順番に解説します。テーブルの作成まず、4つのINT型カラムを持つテーブルを作成しましょう。mysql> c