ほとんどの主要なDBMSは、null値を別の値に置き換えるための関数を提供します。
ただし、関数の名前はDBMS間で異なる傾向があります。たとえば、SQLServerにはISNULL()
があります 関数、他(MySQL、MariaDB、SQLiteなど)にはIFNULL()
があります 同じことをするための関数。
ただし、混乱させるために、MySQLとMariaDBにはそれぞれISNULL()
があります。 同じ名前のSQLServerの関数とは異なる動作をする関数(MySQLとMariaDBの実装は、単一の引数のみを受け入れ、1
を返します。 null
の場合 および0
そうでない場合)。
とにかく、Oracle Databaseの場合、NVL()
を使用できます。 null値を別の値に置き換える関数。
実際、OracleDatabaseにはNVL2()
もあります。 最初の引数がnull
でない場合に使用する別の値を提供できるようにする関数 。
値がnull
であるかどうかを単にテストしたい場合 かどうかにかかわらず、IS NULL
を使用できます 条件(またはIS NOT NULL
反対のテストの場合)。
NVL()
機能
これは、NVL()
がどのように機能するかを示す例です。 機能は動作します:
SELECT NVL(null, 'Run')
FROM DUAL;
結果:
Run
その場合、最初の引数はnull
でした そのため、2番目の引数が返されました。
最初の引数がnull
でない場合は次のようになります :
SELECT NVL('Walk', 'Run')
FROM DUAL;
結果:
Walk
最初の引数が返されます。
NVL2()
機能
前述のように、OracleDatabaseはNVL2()
も提供します。 働き。この関数を使用すると、最初の引数がnull
でない場合に使用する別の値を提供できます。 。
仕組みの例を次に示します。
SELECT NVL2(null, 2, 3)
FROM DUAL;
結果:
3
最初の引数はnull
でした そのため、3番目の引数が返されました。
最初の引数がnull
でない場合は次のようになります :
SELECT NVL2(1, 2, 3)
FROM DUAL;
結果:
2
2番目の引数が返されます。
IS NULL
およびIS NOT NULL
条件
値がnull
であるかどうかを確認したいだけの場合 、IS NULL
を使用できます 比較条件。または、IS NOT NULL
を使用することもできます null
ではないかどうかを確認します 。
次の表があるとします。
SELECT * FROM Autoparts
WHERE Price IS NULL;
結果:
ID | OE# | 価格 | モデル |
---|---|---|---|
2 | 62150B3278 | – | カムリ |
1 | 62150A3278 | 168 | ハイラックス |
この場合、PRICE
列には、最初の行にはnull値が含まれていますが、2番目の行には含まれていません。
IS NULL
の使用例を次に示します。 そのテーブルに対して:
SELECT * FROM Autoparts
WHERE Price IS NULL;
結果:
ID | OE# | 価格 | モデル |
---|---|---|---|
2 | 62150B3278 | – | カムリ |
価格がnullの行のみが返されます。
IS NOT NULL
を使用すると次のようになります :
SELECT * FROM Autoparts
WHERE Price IS NOT NULL;
結果:
ID | OE# | 価格 | モデル |
---|---|---|---|
1 | 62150A3278 | 168 | ハイラックス |
もう一方の行が返されます。