Null

匹配NULL時結果集為空?

  • February 9, 2017

如果我執行一個語句,例如,SELECT * FROM stuff WHERE something=NULL我將得到一個空的結果集。

我知道解決方案是使用something IS NULL. 我也明白為什麼:SQL 解釋NULLunknown,如果某些東西是未知的,它就不能匹配其他東西是合乎邏輯的。

令我困惑的是結果集的含義。我一直都明白你不能匹配 something=NULL,那為什麼可以接受呢?這表明在某些情況下,可能會得到不同的結果?

或者,為什麼 SQL 不接受something=NULLIS NULL? 它不是唯一沒有字面解釋的成語(例如count(*)vs SELECT *)。

問題是:既然something=NULL不是錯誤,它是否意味著有用的東西?

您可以將事物與NULL.

something=NULL不是錯誤。

它是一個布爾表達式,計算結果為未知。SQL 使用三值邏輯。布爾表達式的可能結果是true,falseunknown

WHERE子句僅返回謂詞計算為 的行true

雖然與文字比較null很少=null(如果有的話)有用,但能夠col = something對可能包含的列使用謂詞當然很有用,並且在那裡操作nulls的語義是相同的。= something``null

引用自:https://dba.stackexchange.com/questions/163805