このOracleSQLチュートリアルでは、OracleのNVL関数の説明と例を示します
。OracleのNVL()関数とは
OracleのNVL関数は、null値を特定の値に置き換えるために使用される入れ子関数です
上記の構文では
expr1 :nullを含む可能性のあるソース値または式です。列名、列名の関数を指定できます
expr2:expr1からnullが返された場合に配置されるターゲット値です
expr1がnullの場合、NVLはexpr2を返します。 expr1がnullでない場合、NVLはexpr1を返します。
注意すべき重要なポイント
(1)引数expr1およびexpr2は、任意のデータ型にすることができます。それらのデータ型が異なる場合、OracleDatabaseは暗黙的に一方を他方に変換します。暗黙的に変換できない場合、データベースはエラーを返します。
expr1が文字データの場合、Oracle Databaseはそれらを比較する前にexpr2をexpr1のデータ型に変換し、expr1の文字セットでVARCHAR2を返します。
expr1が数値の場合、Oracleは、数値の優先順位が最も高い引数を判別し、他の引数をそのデータ型に暗黙的に変換して、そのデータ型を返します。
したがって、次のステートメントは成功します
select nvl(num-col ,10) from <table> select nvl(char-col ,'NA') from <table> select nvl(end_date,'01-MAY-18') from <table>
次のステートメントは暗黙的な変換を行います
select nvl(char-col ,1) from <table>からnvl(char-col、1)を選択します
次のステートメントは失敗します
select nvl(end_date,'m/a') from <table> select nvl(user_id,'abc') from <table>
NVL()関数の使用方法
この関数は、null値を返したくない場合や、nullは値全体をnullに変換するため、数値計算で非常に便利です。
しましょう 例を挙げて理解してください。
sales_peopleテーブルには、営業担当者による売上、売上に対する手数料%、従業員の給与が含まれています。営業担当者の月収の合計を計算します。売上にはnull値を含めることができます
ステートメントは
select name,(salary + sales*commission/100) Monthy_income from sales_people;
計算にはnull値があるため、その期間に販売を行っていないすべての人のnull値が返されます
これは、nvl関数を使用して修正できます
select name,(salary + nvl(sales,0)*commission/100) Monthly_income from sales_people;
したがって、数学演算を実行する際に明らかに非常に役立ちます。 OracleのNVL関数は非常に便利な関数であり、さまざまな場所で使用できます
また読む
oraclesql日付関数
OracleのNULLIF関数
oracleのステートメントの更新
Oracleの合体関数
oracleの日付形式の変更
https:// docs .oracle.com / cd / B19306_01 / server.102 / b14200 / features105.htm