MySQLにはIFNULL()
があります NULL値を別の値に簡単に置き換えることができる関数。
構文
IFNULL(expr1,expr2)
expr1
の場合 NULL
ではありません 、IFNULL()
expr1
を返します ;それ以外の場合は、 expr2
を返します。 。
例
NULL
を使用する基本的な例を次に示します。 定数:
SELECT IFNULL( null, 'n/a' );
結果:
n/a
この場合、IFNULL()
を使用しました NULL値を文字列n/a
に置き換えます 。
最初の引数がNULL
でない場合は次のようになります :
SELECT IFNULL( 'Cow', 'n/a' );
結果:
Cow
この場合、最初の引数が返されます。これは、NULL
ではないためです。 。
データベースの例
次のクエリを実行するとします。
SELECT
PetName,
DOB
FROM Pets;
結果:
+---------+------------+ | PetName | DOB | +---------+------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | NULL | | Meow | NULL | | Woof | 2020-10-03 | | Ears | 2022-01-11 | +---------+------------+
DOB列に2つの行の値がNULLであることがわかります。
次のクエリでは、IFNULL()
を使用します NULL値をリーダーにとってより意味のある値に置き換えるには:
SELECT
PetName,
IFNULL( DOB, 'None supplied' )
FROM Pets;
結果:
+---------+--------------------------------+ | PetName | IFNULL( DOB, 'None supplied' ) | +---------+--------------------------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | None supplied | | Meow | None supplied | | Woof | 2020-10-03 | | Ears | 2022-01-11 | +---------+--------------------------------+
表現
最初の引数の現在の値が評価されます。したがって、次のような式を提供すると、次のようになります。
SELECT IFNULL( 2 * 5, 0 );
これを取得します:
10
したがって、2 * 5
は取得されません 部。その式の結果を取得します(この場合は10
。
式の結果がNULL
の場合も、同じことが言えます。 :
SELECT IFNULL( 2 / 0, 0 );
これを取得します:
0.0000
ただし、注意が必要です。ゼロは値です。 NULL
ではありません。
上記の例では、NULL値がある場合にゼロを返しましたが、これは誤解を招く可能性があり、完全に間違っている可能性もあります。価格を分割していて、結果がゼロの価格だったと想像してみてください。 OK、価格をゼロで割っている場合は、おそらく他に何か問題がありますが、私の主張は理解できると思います。
いずれにせよ、通常は、価値がないことを読者に伝える、より意味のある値を使用することをお勧めします。
例:
SELECT IFNULL( 2 / 0, 'No value' );
結果:
No value