算術方程式は暗黙的にNULLIF()で評価されますか
質問
私の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がエラーを返します。
所属していません StackOverflow