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

MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?

MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。

ここでは、!=NULLIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。

テーブルの作成

まず、次のコマンドでテーブルを作成します。

mysql> create table DemoTable1970
    (
    Value int
    );
Query OK, 0 rows affected (0.00 sec)

レコードの挿入

insertコマンドを使って、テーブルにレコードを挿入します。

mysql> insert into DemoTable1970 values(10);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1970 values(NULL);
Query OK, 1 row affected (0.00 sec)

レコードの表示

select文でテーブル内のすべてのレコードを表示してみましょう。

mysql> select * from DemoTable1970;

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

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

!=NULLとIS NOT NULLの違いを確認するクエリ

次のクエリを実行すると、両者の違いが明確にわかります。

mysql> select Value!=NULL as Output1,Value IS NOT NULL as Output2 from DemoTable1970;

実行結果:

+---------+---------+
| Output1 | Output2 |
+---------+---------+
|    NULL |       1 |
|    NULL |       0 |
+---------+---------+
2 rows in set (0.00 sec)

結果の解説

この出力結果から、以下のことが読み取れます。

  • Output1(Value != NULL):値が10であってもNULLであっても、常にNULLが返されます。NULLとの比較は「結果が不明」になるためです。
  • Output2(Value IS NOT NULL):値が10の場合は1(真)、NULLの場合は0(偽)が返され、NULLの判定が正しく行えています。

このように、NULLを判定する場合には!=NULL=NULLではなく、必ずIS NOT NULLIS NULLを使用することが重要です。

  1. 【MySQL】<>演算子とIS NOT NULLの違いを徹底解説

    MySQLでは、<>演算子を使ってNULL値と比較すると、必ずNULLが返され、結果として何も取得できません。これはMySQLの重要な仕様であり、多くの開発者がつまずくポイントです。 NULLとの比較結果がNULLになる理由 NULLは「値が不明・存在しない」という特殊な状態を表します。そのため、NULLと何かを比較した結果自体が「不明(NULL)」となり、WHERE句の条件としてはTRUEと評価されません。 以下の例で実際に確認してみましょう。 mysql> select 10 <> NULL; +------------+ | 10 <> NULL

  2. MySQLのTINYINT(1)とブール型(BOOLEAN)の違いとは?

    結論から言うと、TINYINT(1)とブール型(BOOLEAN)の間に違いはありません。MySQLでは、BOOLまたはBOOLEANというキーワードは内部的にTINYINT(1)へと変換されます。つまり、BOOLやBOOLEANはTINYINT(1)の別名(シノニム)として扱われるのです。それでは、実際にテーブルを作成して確認してみましょう。BOOLEAN型でテーブルを作成するmysql> create table DemoTable ( isMarried Boolean ); Query OK, 0 rows affected (1.77 sec)次に、作成したテーブルの構造