9

NAMEテーブルのFIRST列にnullがありますが、行が選択されていません。理解するのを手伝ってください。

SELECT * FROM NAME WHERE FIRST != '1'
4

5 に答える 5

16

との比較nullはすべてfalseです- 、、、=など。リストで使用することもできません-無視されます。さらに、2つのsは互いに等しくさえありません。<>><nullINnull

nullを取得するには、次のように明示的にnullを要求する必要があります。

SELECT * FROM NAME WHERE FIRST IS NULL OR FIRST != '1'
于 2013-02-21T03:35:54.317 に答える
10

NULLと比較すると、NULLが返されます。これはFALSEと同等です。これは等しくないことの真の前夜です。

NULL値を含める場合は、次のいずれかを実行します。

where first <> '1' or first is null

また

where coalesce(first, '<null>') <> '1'
于 2013-02-21T03:35:02.413 に答える
4

Oracleでは、明示的に要求しない限り、nullは選択する正当な値とは見なされません。

select * from name where (first != '1') or first is null

NVL(合体と同様)を使用することもできます。

select * from name where nvl(first,'0') != '1'
于 2013-02-21T03:35:12.800 に答える
3

NULLは他のものと比較することはできないので、それは正しいです。

あなたが持っている唯一のオプションは、コマンドにまたはとしてNULLチェックを含めることです

SELECT * FROM NAME WHERE FIRST!=1 OR FIRST IS NULL

Oracle Documentationによると、NULLは、不明な値として、または値に意味がない場合に定義されます。これが、OracleがZEROの値をNULLと見なさないと言及している理由です。これは単なる参考情報であり、アドオンです。ありがとう!

于 2013-02-21T03:41:29.617 に答える