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の使い方をしっかり覚えておきましょう。
-
MySQLのLIKEクエリで「%」を含む列値を検索する方法【エスケープ処理の基本】
MySQLのLIKEクエリで「%」を含む値を検索するには?MySQLでは、「%」はLIKE句におけるワイルドカードとして機能するため、そのまま検索することはできません。「%」という文字そのものを含む列値を検索したい場合は、バックスラッシュ(\)によるエスケープ処理が必要です。基本構文「%」を含む列値を検索する場合の構文は以下の通りです。select * from yourTableNamewhere yourColumnName LIKE \%%;ポイントは、検索対象の「%」の直前に「\(バックスラッシュ)」を付けることです。これにより、ワイルドカードではなく通常の文字として扱われます。実際に
-
MySQLで複数のカラムにNULL値を含むレコードを検索する方法
はじめにMySQLで複数のカラムの中にNULL値が1つでも含まれているレコードを抽出したい場合、GREATEST()関数を活用するのが効果的です。GREATEST()は引数の中から最大値を返す関数ですが、引数のいずれかにNULLが含まれている場合、結果もNULLを返すという特性があります。この特性を利用すれば、複数カラムにわたるNULL値のチェックをシンプルな条件式で実現できます。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、NULL値を含むレコードを検索する手順を順番に解説します。テーブルの作成まず、4つのINT型カラムを持つテーブルを作成しましょう。mysql> c