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

MySQLでNULLを含む列からNULL以外(NOT NULL)の値だけを抽出して表示する方法

MySQLのIS NOT NULLを使ってNULL以外の値のみを表示する

MySQLで、NULLとNULL以外のレコードが混在する列からNULL以外の値だけを取得したい場合は、IS NOT NULL演算子を使用します。この記事では、実際にテーブルを作成しながら手順を解説します。

1. テーブルの作成

まず、日付型の列を持つサンプルテーブルを作成します。

mysql> create table DemoTable1
     (
     DueDate date
     );
Query OK, 0 rows affected (0.00 sec)

2. レコードの挿入

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

mysql> insert into DemoTable1 values('2019-09-10');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1 values(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1 values('2019-11-10');
Query OK, 1 row affected (0.00 sec)

3. 全レコードの確認

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

mysql> select * from DemoTable1;

実行結果は以下の通りです。NULL値が混在していることが確認できます。

+------------+
| DueDate    |
+------------+
| 2019-09-10 |
| NULL       |
| 2019-11-10 |
+------------+
3 rows in set (0.00 sec)

4. IS NOT NULLでNULL以外の値のみを抽出

ここで、2つ目のテーブルを作成し、WHERE DueDate IS NOT NULLという条件を指定することで、NULL以外の値だけを転送します。

mysql> create table DemoTable2
     (
     AdmissionDate date
     );
Query OK, 0 rows affected (0.00 sec)
mysql> insert into DemoTable2(AdmissionDate)
     select DueDate from DemoTable1 where DueDate IS NOT NULL;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

5. 結果の確認

再度SELECT文で全レコードを表示します。

mysql> select * from DemoTable2;

実行結果を見ると、NULL値が除外され、NULL以外の日付データのみが格納されていることがわかります。

+---------------+
| AdmissionDate |
+---------------+
| 2019-09-10    |
| 2019-11-10    |
+---------------+
2 rows in set (0.00 sec)

まとめ

MySQLでNULL以外の値のみを表示・抽出するには、WHERE句にIS NOT NULLを指定します。= NULL!= NULLのような比較演算子ではNULLを判定できないため、必ずIS NOT NULL(またはIS NULL)を使用する点に注意してください。

  1. MySQLでカンマ区切りの値を持つ列から特定のレコードを検索する方法

    MySQLでは、カンマ区切りで複数の値が格納された列から特定の値を含むレコードを抽出したいケースがあります。そんなときに便利なのが FIND_IN_SET() 関数です。この関数を使うと、カンマ区切りの文字列の中に指定した値が存在するかどうかを簡単に判定できます。この記事では、実際にテーブルを作成し、FIND_IN_SET() を使って特定のレコードを検索する手順を解説します。1. テーブルの作成まず、カンマ区切りの値を格納するためのテーブルを作成します。mysql> create table DemoTable -> ( -> ListOfValue varch

  2. MySQLで重複する値ごとのレコードを別の列に合計して表示する方法

    MySQLでは、重複している値(同じ名前など)を持つ複数のレコードの数値を、名前ごとにまとめて合計したいケースがあります。このような場合には、集計関数SUM()とGROUP BY句を組み合わせることで簡単に実現できます。本記事では、実際にサンプルテーブルを作成し、重複する値を持つレコードを別の列(合計列)として集計・表示する手順を解説します。1. サンプルテーブルを作成するまず、CREATE TABLE文を使ってテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(20), -> V