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

MariaDBでのIFNULL()のしくみ

    MariaDBでは、IFNULL() 関数を使用すると、NULL値を別の値に置き換えることができます。

    構文

    IFNULL(expr1,expr2)

    expr1の場合 NULLではありません 、IFNULL() expr1を返します ;それ以外の場合は、 expr2を返します。

    また、MariaDB 10.3から、NVL() IFNULL()のエイリアスとして使用できます 働き。したがって、代わりに次の構文を使用するオプションがあります。

    NVL(expr1,expr2)

    使用する構文に関係なく、結果は同じです。

    NULLを使用する基本的な例を次に示します。 定数:

    SELECT IFNULL( null, 'No Value' );

    結果:

    No Value

    この場合、IFNULL()を使用しました NULL値をNo Valueに置き換えます 。

    最初の引数がNULLでない場合は次のようになります :

    SELECT IFNULL( 'Spicy', 'No Value' );

    結果:

    Spicy

    この場合、最初の引数が返されます。これは、NULLではないためです。 。

    データベースの例

    次のクエリを実行するとします。

    SELECT * FROM Employees;

    結果:

    empId	name	dept
    -----   -----   -----
    1	Jess	Sales
    2	Rohit	NULL
    3	Zohan	Sales
    4	Homer	NULL

    deptで2つの行の値がNULLであることがわかります 列。

    次のクエリでは、IFNULL()を使用します NULL値をリーダーにとってより意味のある値に置き換えるには:

    SELECT
        empId,
        name,
        IFNULL( dept, 'Not yet assigned' ) AS dept
    FROM Employees;

    結果:

    empId	name	dept
    -----   -----   ----------------
    1	Jess	Sales
    2	Rohit	Not yet assigned
    3	Zohan	Sales
    4	Homer	Not yet assigned

    表現

    最初の引数の現在の値が評価されます。したがって、次のような式を提供すると、次のようになります。

    SELECT IFNULL( 3 * 7, 0 );

    これを取得します:

    21

    したがって、3 * 7は取得されません 部。その式の結果を取得します(この場合は21

    式の結果がNULLの場合も、同じことが言えます。 。たとえば、次のコードを実行すると、次のようになります。

    SELECT IFNULL( 3 / 0, 0 );

    これを取得します:

    0.0000

    ただし、これは危険な例です。ゼロは値です。 NULL ではありません。

    NULL値があるときにゼロを返すと、誤解を招く可能性があり、完全に間違っている可能性もあります。価格を扱っていると想像してみてください。最終的に価格がゼロになる可能性がありますが、これは正しくなく、ビジネスに多額の費用がかかる可能性があります。

    したがって、このような場合は、通常、価値がないことを読者に伝える、より意味のある値を使用することをお勧めします。

    例:

    SELECT IFNULL( 3 / 0, 'No value' );

    結果:

    No Value

    NVL() 機能

    MariaDB 10.3以降、NVL() IFNULL()のエイリアスです 。したがって、IFNULL()を置き換えることができます NVL()を使用 上記の例のいずれかで。

    例:

    SELECT NVL( 3 / 0, 'No value' );

    結果:

    No Value

    1. カンマ区切りのリストとしてのMySQLの結果

    2. MySQL挿入クエリはWHERE句では機能しません

    3. Oracleパッケージ内の依存関係を見つける方法は?

    4. BLOBを除くすべてのフィールドでSELECTDISTINCTを実行するにはどうすればよいですか?