sql >> データベース >  >> RDS >> Oracle

OracleでNVL()関数を使用する方法

    この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


    1. DBMS_RANDOMを使用してOracleでランダムな日付を生成します

    2. SQLite onUpgrade()のフラストレーション

    3. SQLAlchemy:JSONBフィールドのネストされたリストに格納されている値のフィルタリング

    4. 「トリニダード・トバゴ」を使用したOracleSQLDeveloperでの変数置換を回避する方法