ほとんどの主要な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 | ハイラックス |
もう一方の行が返されます。