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になることを防ぎ、意図した数値を得ることができます。
-
MySQLの結果にテーブル一覧を表示する際のエイリアス(AS)の使い方
MySQLの結果にテーブル名を表示するエイリアスとは? MySQLでは、ASコマンドを使ってエイリアス(別名)を定義することで、結果セットの列見出しを任意の名前に変更できます。データベース内のテーブル一覧を取得する際、デフォルトの「TABLE_NAME」という列名を見やすい名前に置き換えたい場合に非常に便利です。 基本構文 エイリアスを使用する基本的な構文は以下のとおりです。 SELECT TABLE_NAME AS anyAliasName FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE(); 構文のポイント I
-
MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?
MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970 (