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

MySQLで引数にNULLを含む算術計算を実行すると結果はどうなる?

MySQLでNULLを含む算術計算の結果

MySQLでは、算術計算の引数の1つでもNULLが含まれている場合、その計算結果は必ずNULLになります。これは、NULLが「不明な値」を表すため、不明な値との演算結果も不明(NULL)になるというSQLの仕様によるものです。

以下は、加算(+)、減算(-)、乗算(*)、除算(/)のそれぞれにおいて、NULLを引数として指定した例です。

mysql> Select 10*NULL;
+---------+
| 10*NULL |
+---------+
|    NULL |
+---------+
1 row in set (0.12 sec)

mysql> Select 10+NULL;
+---------+
| 10+NULL |
+---------+
| NULL    |
+---------+
1 row in set (0.00 sec)

mysql> Select 10-NULL;
+---------+
| 10-NULL |
+---------+
|    NULL |
+---------+
1 row in set (0.07 sec)

mysql> Select 10/NULL;
+---------+
| 10/NULL |
+---------+
|    NULL |
+---------+
1 row in set (0.00 sec)

上記のすべての算術演算の出力がNULLになっているのは、引数の1つにNULLが含まれているためです。この動作は四則演算の種類に関係なく共通しており、どの演算でも結果はNULLになります。

NULLを別の値に置き換えて計算する方法

NULLを含むデータで計算を行い、NULLの代わりに特定の値を使用したい場合は、IFNULL()関数やCOALESCE()関数が便利です。例えば、NULLを0として扱いたい場合は次のように記述します。

mysql> Select 10*IFNULL(NULL,0);
+-------------------+
| 10*IFNULL(NULL,0) |
+-------------------+
|                 0 |
+-------------------+
1 row in set (0.00 sec)

このように関数を組み合わせることで、NULLが原因で計算結果全体がNULLになることを防ぎ、意図した数値を得ることができます。

  1. MySQLの結果にテーブル一覧を表示する際のエイリアス(AS)の使い方

    MySQLの結果にテーブル名を表示するエイリアスとは? MySQLでは、ASコマンドを使ってエイリアス(別名)を定義することで、結果セットの列見出しを任意の名前に変更できます。データベース内のテーブル一覧を取得する際、デフォルトの「TABLE_NAME」という列名を見やすい名前に置き換えたい場合に非常に便利です。 基本構文 エイリアスを使用する基本的な構文は以下のとおりです。 SELECT TABLE_NAME AS anyAliasName FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE(); 構文のポイント I

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

    MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970     (