Null
匹配NULL時結果集為空?
如果我執行一個語句,例如,
SELECT * FROM stuff WHERE something=NULL
我將得到一個空的結果集。我知道解決方案是使用
something IS NULL
. 我也明白為什麼:SQL 解釋NULL
為unknown,如果某些東西是未知的,它就不能匹配其他東西是合乎邏輯的。令我困惑的是結果集的含義。我一直都明白你不能匹配
something=NULL
,那為什麼可以接受呢?這表明在某些情況下,可能會得到不同的結果?或者,為什麼 SQL 不接受
something=NULL
與IS NULL
? 它不是唯一沒有字面解釋的成語(例如count(*)
vsSELECT *
)。問題是:既然
something=NULL
不是錯誤,它是否意味著有用的東西?
您可以將事物與
NULL
.
something=NULL
不是錯誤。它是一個布爾表達式,計算結果為未知。SQL 使用三值邏輯。布爾表達式的可能結果是
true
,false
或unknown
。該
WHERE
子句僅返回謂詞計算為 的行true
。雖然與文字比較
null
很少=null
(如果有的話)有用,但能夠col = something
對可能包含的列使用謂詞當然很有用,並且在那裡操作nulls
的語義是相同的。= something``null