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

Oracle NULLIF()関数

    このSQLチュートリアルでは、OracleのNULLIF関数の説明と例を示します

    NULLIF関数は非常に便利な関数です。2つの値を比較し、値が同じ場合はnullを返し、それ以外の場合は最初の値を返します

    expr1 :expr2と比較されるのはソース値または式です
    expr2 :expr1と比較されるソース値でもあります

    最初の値にリテラルNULLを指定することはできません

    SQL> select nullif(NULL,1) from dual;
    select nullif(NULL,1) from dual
    *
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected - got CHAR

    使用法と例

    SQL> select nullif(1,1) from dual;
    NULLIF(1,1)
    ----------- SQL> select nullif(1,2) from dual; NULLIF(1,2)
    -----------
    1

    重要な注意

    1)このステートメントはcaseステートメントと非常によく似ており、
    CASE WHEN expr1 =expr2 THEN NULL ELSE expr1 END

    と同等です。

    2)両方の引数が数値データ型の場合、Oracle Databaseは数値の優先順位が高い引数を判別し、もう一方の引数をそのデータ型に暗黙的に変換して、そのデータ型を返します。引数が数値でない場合は、同じoracleデータ型である必要があります。そうでない場合、Oracleはエラーを返します。

    SQL> select nullif(1,'apple') from dual;
    select nullif(1,'apple') from dual
    *
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

    SQL> select nullif('apple',1) from dual;
    select nullif('apple',1) from dual
    *
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected CHAR got NUMBER

    その他の例

    select first_name, length(first_name),last_name,
    length(last_name), nullif(length(first_name),length(last_name))
     from emp;
    
    SELECT NULLIF('Sunday', 'Friday') AS check FROM dual;
    

    NULLIF関数の別のユースケースは、雇用されてから転職した従業員を一覧表示する場合です。これは、employeesテーブルの現在のjob_idとは異なるjob_historyテーブルのjob_idで示されます。

    select emp_name,nullif(b.job_id,a.job_id) old_job from employees a,   job_history  b where a.emp_id=b.emp_id;

    Nullif関数に関するFAQ

    NULLIF関数を使用してゼロ除算エラーを回避する方法

    除算の分母がゼロの場合、ゼロ除算エラーが発生します。以下のようにNULLIF関数を使用することで回避できます。
    select100/ nullif(0,0)from dual;
    ここで、両方の値が等しいため、Nullifはnullを返し、式全体はnullを返します。エラーの。実際の列を処理するときに使用できる方法は次のとおりです。
    expからcol2/nullif(col1,0)を選択します。

    関連記事

    oracleのステートメントの更新
    OracleのNVL2関数
    OracleのNVL関数
    Oracleの合体関数
    sqlの単一行関数
    Oracleのテーブルステートメントから削除

    >

    外部リソース
    NULLIFのOracleリファレンス


    1. SQLServerイベントをキャプチャして分析する方法

    2. Oracle SQL Developerでカスタム日時フォーマットを設定するにはどうすればよいですか?

    3. プロアクティブなSQLServerヘルスチェック、パート5:待機統計

    4. SQLServerデータベースのCPU使用統計