2017-10-10 4 views
-2

orther言語(C#、Sql Server)では、1 + nullまたは '1' + nullがNULLですが、Oracleの結果は次のとおりです。 null = 1であるが、 '1' + null = null。例:oracleの値がプラス

select 1 || null from dual ; 
select '1' + null from dual; 

結果:1、なぜ私に言うことができるヌル

+0

"しかし、Oracleの結果は:1 || null is null"いいえ – APC

+0

ありがとうございます。私は編集されています –

答えて

4

OracleはNULLを、空文字列はthe same thingと扱います。

したがっては1 || ""と同じです(これは'1'です - これは論理ORではなくSQLの文字列連結です)。

+の場合、両方の引数は数値に変換され、NULLを含む算術演算の結果はNULLになります。

+1

しかし、なぜ:nullを選択した場合= ''次に1つのelse 0の終了から二重; 0ですか? nullで ""同じ場合は1になります。 –

+1

@ NguoiTotbung - 同じ理由で、 'null = null'はfalseです:NULLは何も等しい** never ** **です。そのため、SQL言語にはis is null演算子があります(SQL Serverにもこれがあります)。 – APC