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

MySQLのSELECT文でNULLを扱う方法|IS NULLの使い方を実例で解説

MySQLにおけるNULLの扱い方とSELECTステートメント

MySQLでは、NULLの長さは0として扱われます。本記事では、SELECTステートメントを使ってNULLを操作・判定する方法を、実際のコマンド例とともにわかりやすく解説します。

まず前提として、NULLは「値が存在しない」ことを表す特別な状態であり、空文字列('')とは明確に異なる点に注意してください。

1. CREATEコマンドでテーブルを作成する

最初に、CREATE TABLEコマンドを使ってサンプル用のテーブルを作成します。

mysql> CREATE table NullWIthSelect
-> (
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.62 sec)

上記のように、テーブルを正常に作成できました。

2. INSERTコマンドでレコードを挿入する

続いて、INSERTコマンドを使って複数のレコードを挿入していきます。

mysql> INSERT into NullWIthSelect values('John');
Query OK, 1 row affected (0.16 sec)

mysql> INSERT into NullWIthSelect values('Bob');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT into NullWIthSelect values();
Query OK, 1 row affected (0.18 sec)

mysql> INSERT into NullWIthSelect values('Carol');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT into NullWIthSelect values('');
Query OK, 1 row affected (0.16 sec)

mysql> INSERT into NullWIthSelect values('David');
Query OK, 1 row affected (0.19 sec)

mysql> INSERT into NullWIthSelect values();
Query OK, 1 row affected (0.08 sec)

上記では合計7件のレコードを挿入しました。内訳は以下の通りです。

  • 実際の値を持つレコード:4件(John、Bob、Carol、David)
  • 空文字列('')のレコード:1件
  • NULLのレコード:2件(VALUESの値を省略して挿入)

3. SELECTですべてのレコードを表示する

挿入した全レコードを確認するには、SELECTコマンドを使用します。

mysql> SELECT * from NullWIthSelect;

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

+-------+
| Name  |
+-------+
| John  |
| Bob   |
| NULL  |
| Carol |
|       |
| David |
| NULL  |
+-------+
7 rows in set (0.00 sec)

NULLの行と、空文字列の行が混在しているのが確認できます。

4. IS NULLでNULLのレコードを抽出する

NULLを判定する場合、「= NULL」ではなく「IS NULL」を使用するのが基本です。まず構文を確認しましょう。

SELECT * from yourTableName where column_name is NULL;

この構文を適用して、Nameカラムの値がNULLであるレコードを取得してみます。

mysql> SELECT * from NullWIthSelect where Name is NULL;

実行結果:

+------+
| Name |
+------+
| NULL |
| NULL |
+------+
2 rows in set (0.00 sec)

このように、NULLのレコード2件のみが正確に抽出されました。

5. COUNT関数でNULLの長さが0であることを確認する

最後に、COUNT関数を使って、NULLが「長さ0」として扱われることを確認します。

mysql> SELECT count(Name) from NullWIthSelect where Name is NULL;

実行結果:

+-------------+
| count(Name) |
+-------------+
| 0           |
+-------------+
1 row in set (0.04 sec)

COUNT(カラム名)はNULL以外の値のみをカウントする関数のため、WHERE句でNULLの行だけに絞り込んでも結果は0になります。この挙動からも、NULLが「値を持たない=長さ0」の状態であることが分かります。なお、NULLを含む行数そのものを数えたい場合は、COUNT(*)を使用してください。

  1. JavaでMySQLのSELECTクエリにPreparedStatement(プリペアドステートメント)を使う方法

    executeQuery()メソッドの基本的な使い方JavaからMySQLに対してSELECTクエリを実行する場合は、PreparedStatementオブジェクトのexecuteQuery()メソッドを使用します。基本構文は以下の通りです。yourPreparedStatementObject = yourConnectionObject.prepareStatement(yourQueryName);yourResultSetObject = yourPreparedStatementObject.executeQuery();それでは、実際にサンプルデータベース「sample」を使って手

  2. PythonからMySQLのIF()関数を使う方法|SELECT文で条件分岐してデータを判定する

    MySQLのIF()関数は、条件に応じて異なる値を返すための条件分岐用の関数です。指定した条件が真(TRUE)の場合と偽(FALSE)の場合で、それぞれ別の値を返すことができます。この記事では、PythonからMySQLデータベースに接続し、SELECT文の中でIF()関数を活用してデータを条件付きで取得する方法を解説します。IF()関数の構文IF(条件, 真の場合の値, 偽の場合の値)IF()関数はSELECT句と組み合わせて使用でき、特定の基準に基づいて取得結果を切り替えることができます。PythonでMySQLのテーブルからIF()関数を使ってデータを取得する手順mysql.connec