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