sql >> データベース >  >> RDS >> Mysql

MySQL IFNULL()の説明

    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

    1. グループ別のSQLServer累積合計

    2. PostgreSQLデータベースをバックアップおよび復元する方法

    3. ストアドプロシージャから、OUTパラメータとOUTカーソルを返し、結果を解析します(Oracle)

    4. 自己満足は次のことにつながります:リスクが現実になる