2016-12-01 7 views
3

私は主にアプリケーション開発のバックグラウンドを持っています。プログラミング言語でvariable == nullまたはvariable != nullが動作します。SQL言語でIS NULLを使用するのはなぜですか= NULLではなくIS NOT NULLであるかNULLではありませんか?

SQLに関しては、以下のクエリでは構文エラーはありませんが、正しい結果も返しません。

select SomeColumn from SomeTable where SomeNullableColumn=null 
select SomeColumn from SomeTable where SomeNullableColumn<>null 

は、なぜ我々は正しい結果を得るためにis nullまたはis not nullでクエリを記述する必要がありますか?

select SomeColumn from SomeTable where SomeNullableColumn is null 
select SomeColumn from SomeTable where SomeNullableColumn is not null 

代わり=nullまたは<>nullis nullまたはis not null背後にある理由/要件は何ですか?

このANSI SQLまたはMicrosoftのTSQL規格ですか?

+3

「NULL」は値ではないため、値がないことを意味します。何かを何も比較することはできません。 –

+0

[nullがヌルfalseと等しくない理由](http://stackoverflow.com/questions/1833949/why-is-null-not-equal-to-null-false)の可能な複製 – EoinS

+2

http:///stackoverflow.com/questions/9581745/sql-is-null-and-null –

答えて

2

NaN(例えば、0は0で除算されるか、または0で累乗した場合、生成される「非数」)はNaNに等しくないようnullは、nullに等しくないからです。 nullを未知の値とみなしてください(未知の値は必ずしも未知の値に等しいとは限りません)。

1

sqlはセット理論と述語論理に基づいているため、この2つの強力な数学的基礎には、数学的論理 - Boolean algebraが含まれています。このロジックには、3つの値 - TRUE, FALSE and UNKNOWN (=NULL)が存在します。

Is nullは、論理を分離するために= nullの代わりに使用されます。なぜANSI標準になっていますか?より読みやすく、3つの論理を分離することです。

一般的なデータウェアハウスでは、qryをより簡単にするために ''で置き換えられます。

またはSET ANSI_NULLS OFFオプションを試してください。

関連する問題