質問

私のSQLの基礎1試験ガイドの状態,

select NULLIF(1234, 123+1) from dual;

算術式は暗黙的に評価されません。..

ただし、以下のクエリを送信すると、結果は次のようになります null -123+1と思われますが---------- 評価されました(クエリが異なることは知っていますが)。

select NULLIF(124, 123+1) from dual;

それで、どちらが正しいですか(とにかく、1Z0-051試験の場合)?式は評価されるかどうか?

役に立ちましたか?

解決

Nullif() 関数は引数と戻り値の両方を評価します NULL もし argument1 に等しい argument2.あなたの場合 123+1 に等しくない 1234. 123+1 は次のように等しくなります 124 ない 1234.

結果はnullです

それはできません null あなたの場合。

SQL> select nullif(1234, 123+1) as res
   2    from dual;

       RES
----------
      1234



SQL> select nullif(1234, 1233+1) as res
  2    from dual
  3  ;

       RES
----------
 NULL

フォローアップ: 私の2セント

上記の NULLIF 以下の場合に相当します

CASE WHEN 1234=123+1 THEN NULL ELSE 1234 END

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

からも ドキュメント

両方の引数が数値データ型の場合、Oracle Databaseは次のようになります。 暗黙的に、より高い数値の優先順位を持つ引数を決定します もう一方の引数をそのデータ型に変換し、そのデータ型を返します データ型。引数が数値でない場合、引数は数値でなければなりません。 同じデータ型、またはOracleがエラーを返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top