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

MySQLでNULLの列を持つ行を抽出する方法(IS NULLの使い方)

MySQLで特定の列がNULLである行を抽出するには、WHERE句と組み合わせてIS NULLを使用します。なお、NULLは「値そのもの」ではなく「値が存在しない状態」を表すため、= NULLのような等価演算子では正しく判定できません。必ずIS NULLを使う点に注意してください。

基本構文

列がNULLである行を選択する場合の基本的な構文は以下のとおりです。

select *from yourTableName where yourColumnName IS NULL;

それでは、実際にサンプルテーブルを作成しながら動作を確認していきましょう。

サンプルテーブルの作成

まず、概念を理解するためにテーブルを作成します。

mysql> create table NULLDemo1
-> (
-> StudentId int,
-> StudentName varchar(100)
-> );
Query OK, 0 rows affected (1.48 sec)

レコードの挿入

続いて、テーブルにレコードを挿入します。StudentIdがNULLのデータも意図的に含めています。

mysql> insert into NULLDemo1 values(NULL,'John');
Query OK, 1 row affected (0.25 sec)
mysql> insert into NULLDemo1 values(100,'Johnson');
Query OK, 1 row affected (0.38 sec)
mysql> insert into NULLDemo1 values(NULL,'Carol');
Query OK, 1 row affected (0.25 sec)
mysql> insert into NULLDemo1 values(101,'Sam');
Query OK, 1 row affected (0.25 sec)

全レコードの確認

SELECT文ですべてのレコードを表示してみます。

mysql> select *from NULLDemo1;

実行結果は以下のとおりです。

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| NULL | John |
| 100 | Johnson |
| NULL | Carol |
| 101 | Sam |
+-----------+-------------+
4 rows in set (0.00 sec)

このように、4件のうち2件(JohnとCarol)はStudentIdがNULLになっています。

IS NULLでNULL行のみを抽出する

それでは、冒頭で紹介した構文をこのテーブルに適用し、StudentIdがNULLである行だけを抽出してみましょう。

mysql> select *from NULLDemo1 where StudentId IS NULL;

実行結果は以下のとおりです。

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| NULL | John |
| NULL | Carol |
+-----------+-------------+
2 rows in set (0.00 sec)

期待どおり、StudentIdがNULLの2行だけが取得できました。

補足:NULL以外の行を抽出したい場合

逆に、列がNULLではない行を取得したい場合は、IS NOT NULLを使用します。

select *from NULLDemo1 where StudentId IS NOT NULL;

このように、MySQLにおけるNULLの判定はIS NULLIS NOT NULLを使うのが基本です。データクレンジングや条件検索の際に頻繁に活用される構文なので、ぜひ覚えておきましょう。

  1. MySQLでNULLを含む列の乗算を処理する方法|COALESCE関数の使い方

    MySQLでNULLを含む列の乗算を正しく計算するにはMySQLでは、数値型の列にNULLが含まれている場合、そのまま乗算すると結果もNULLになってしまいます。このような問題を回避するには、COALESCE() 関数を利用するのが効果的です。COALESCE()は、引数の中から最初に見つかった非NULLの値を返す関数で、NULLを別の値(ここでは「1」)に置き換えて計算できます。以下、実際の手順を見ていきましょう。1. サンプルテーブルを作成するまず、商品点数と金額を格納するテーブルを作成します。mysql> create table DemoTable1842   &nbs

  2. MySQLでWHERE IN句とNULLを組み合わせてレコードを取得する方法

    MySQLでは、WHERE IN句を使った検索時にNULL値を含む行も取得したいケースがあります。しかし、NULLは通常の比較演算子では正しく評価されないため、IS NULLを組み合わせる必要があります。本記事では、その具体的な方法をサンプルコードとともに解説します。基本の構文NULLを含めて検索する場合の基本的な構文は以下のとおりです。ポイントは、IN句の条件に加えて OR カラム名 IS NULL を追加することです。SELECT yourColumnName1, yourColumnName2, yourColumnName3, ... N FROM yourTabl