null 値は、空白のままであるか、値が割り当てられていないフィールドです。
特に外部データをインポートする場合、データベースでは NULL 値が一般的です。したがって、列に NULL 値を防止する制約が含まれていない限り、データベース エンジンは欠損値に NULL 値を使用する可能性があります。
NULL 値は一般的ですが、データベースには操作する値がないため、データベースの問題が発生する可能性があります。したがって、クエリで NULL 値を処理するアクションを適用することをお勧めします。
この投稿では、特定のテーブルの NULL 値を変換して、データベースで操作エラーが発生する可能性が低いデフォルト値を含める方法を学習します。
Oracle NVL関数
前述のように、この関数を使用すると、NULL 値をより意味のある値に置き換えることができます。関数の構文は次のとおりです。
NVL ( expr1、expr2 ) ;
この関数は、2 つの主な引数を受け入れます。
expr1 と expr2 – このパラメーターは、NULL 値についてテストする値を定義します。 expr1 の値が NULL の場合、関数は expr2 の値を返します。
どちらの式も、類似したデータ型または異なるデータ型を持つことができます。対応するデータ型が異なる場合、データベース エンジンはデータ型との互換性を確保するために暗黙的な変換を実行する場合があります。対応するデータ型を変換できない場合、データベース エンジンはエラーをスローします。
Oracle NVL() 関数の使用例
次の例は、NVL() 関数の基本的な使用法を示しています。
例 1
次の例を検討してください。
選択する レベル ( 'こんにちは' 、 '世界' ) デュアルから;前の例では、NVL() 関数を使用して、文字列「hello」が NULL 値かどうかをテストしています。指定された値は null ではないため、関数は文字列「hello」を返します。
例 2
次に示す 2 番目の例を考えてみましょう。
選択する レベル ( ヌル、 '世界' ) デュアルから;この場合、最初の式が NULL 値であるため、クエリは次のように 2 番目の文字列を返します。
例 3
NVL() 関数を使用して、データベース テーブルの NULl 値を置き換えることもできます。以下に示す従業員のテーブルを考えてみましょう。
選択する EMPLOYEES従業員からのFIRST_NAME、LAST_NAME、EMAIL、SALARY、COMMISSION_PCT。結果のテーブル:
ご覧のとおり、commission_pct 列には NULl 値が含まれています。以下の例に示すように、commission_pct 列の NULL 値を 0 に置き換えるクエリを作成できます。
選択する FIRST_NAME, LAST_NAME, EMAIL, SALARY, nvl ( COMMISSION_PCT、 0 )EMPLOYEES 従業員から;
前のクエリ例では、NVL() 関数を使用して、commission_pct 列の値が NULL かどうかをテストします。 NULL 値がある場合は 0 を返します。それ以外の場合は元の値を返します。
これにより、次の結果の表に示すように、列の NULL 値を 0 に置き換えることができます。
これを UPDATE ステートメントで使用したり、結果の値をテーブル ビューに格納したりできます。
結論
このチュートリアルでは、Oracle NVL() 関数を使用して NULL 値をデフォルト値に置き換える方法を学習しました。 NVL() 関数は COALESCE() 関数によく似ていますが、NVL() 関数は 1 つの値しか返せないことに注意してください。同時に、coalesce() 関数は複数の値を返すことができます。
coalesce() 関数を使用せずに 3 つ以上の引数を取ることができる関数を探している場合は、NVL2() 関数を検討してください。