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

MySQLでNULLレコードを除外してデータを取得する方法(IS NOT NULLの使い方)

MySQLでNULL以外のレコードを選択するには?

MySQLでNULLが含まれていないレコードだけを取得したい場合は、IS NOT NULL演算子を使用します。等価比較(= や !=)ではNULLを判定できないため、必ず「IS NOT NULL」を使う点がポイントです。

ここでは、実際にテーブルを作成し、NULLデータを除外するSELECT文の動作を順番に確認していきましょう。

1. テーブルの作成

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable1792
    (
    Name varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2. レコードの挿入

次に、INSERT文を使って値とNULLを含む複数のレコードを挿入します。

mysql> insert into DemoTable1792 values('John Smith');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1792 values(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1792 values('David Miller');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1792 values(NULL);
Query OK, 1 row affected (0.00 sec)

3. 全レコードの確認

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

mysql> select * from DemoTable1792;

実行結果は以下の通りです。NULLのレコードが2件含まれていることがわかります。

+--------------+
| Name         |
+--------------+
| John Smith   |
| NULL         |
| David Miller |
| NULL         |
+--------------+
4 rows in set (0.00 sec)

4. IS NOT NULLでNULLレコードを除外する

NULLが含まれていないレコードのみを取得するには、WHERE句でIS NOT NULLを指定します。

mysql> select * from DemoTable1792 where Name IS NOT NULL;

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

+--------------+
| Name         |
+--------------+
| John Smith   |
| David Miller |
+--------------+
2 rows in set (0.00 sec)

このように、NULLのレコードが除外され、値が存在する2件だけが取得できました。

補足:IS NOT NULLを使う理由

NULLは「値が不明・未設定」であることを表す特殊な状態のため、「Name = NULL」や「Name != NULL」といった比較では正しく判定できません。NULLかどうかを調べる際は、必ず「IS NULL」または「IS NOT NULL」を使用してください。

  1. MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)

    MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599    -> (    -> Shippingdate d

  2. MySQLのNOT NULL制約とは?空にできない列の定義方法とエラーの挙動を解説

    MySQLでは、列にNULL(空の値)を許可したくない場合、テーブル定義時にNOT NULL制約を指定します。NOT NULLが設定された列にNULLを挿入しようとすると、MySQLはエラーを返し、データの登録を拒否します。NOT NULL制約を持つテーブルの作成まず、Id列とLastName列をNOT NULLとして指定したテーブルを作成してみましょう。mysql> create table DemoTable1895 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20) NOT N