NAMEテーブルのFIRST列にnullがありますが、行が選択されていません。理解するのを手伝ってください。
SELECT * FROM NAME WHERE FIRST != '1'
との比較null
はすべてfalseです- 、、、=
など。リストで使用することもできません-無視されます。さらに、2つのsは互いに等しくさえありません。<>
>
<
null
IN
null
nullを取得するには、次のように明示的にnullを要求する必要があります。
SELECT * FROM NAME WHERE FIRST IS NULL OR FIRST != '1'
NULLと比較すると、NULLが返されます。これはFALSEと同等です。これは等しくないことの真の前夜です。
NULL値を含める場合は、次のいずれかを実行します。
where first <> '1' or first is null
また
where coalesce(first, '<null>') <> '1'
Oracleでは、明示的に要求しない限り、nullは選択する正当な値とは見なされません。
select * from name where (first != '1') or first is null
NVL(合体と同様)を使用することもできます。
select * from name where nvl(first,'0') != '1'
NULLは他のものと比較することはできないので、それは正しいです。
あなたが持っている唯一のオプションは、コマンドにまたはとしてNULLチェックを含めることです
SELECT * FROM NAME WHERE FIRST!=1 OR FIRST IS NULL
Oracle Documentationによると、NULLは、不明な値として、または値に意味がない場合に定義されます。これが、OracleがZEROの値をNULLと見なさないと言及している理由です。これは単なる参考情報であり、アドオンです。ありがとう!