SQL:理解 'x is null' 和 'x = null' 之間的區別
SQL 提供兩種不同的方法來測試列的 NULL 值:'x is null' 和 'x = null'。雖然這兩個表達式看起來相似,但它們的行為卻有顯著的差異。
'x = null' 與 'x is null':關鍵區別
表達式 'x = null' 是比較運算,它檢查 'x' 的值是否等於字面上的 NULL 值。但是,在 SQL 中,任何涉及 NULL 值的比較,包括 'x = null',都會始終傳回 'null'。這是因為 SQL 中的 NULL 值表示未知值,因此無法確定它們是否等於任何其他值。
相反,'x is null' 是專門測試 NULL 值存在的表達式。如果 'x' 為 NULL,則傳回 'true';否則傳回 'false'。這允許對 NULL 值進行準確的測試,而不會出現與 'x = null' 相關的歧義。
為什麼 'x = null' 不作用
如前所述,'x = null' 在 SQL 中將始終傳回 'null'。這意味著當在 WHERE 子句中使用時,它不會產生任何符合的行,因為在這種情況下 'null' 被認為是 false。
範例
考慮以下表格:
X | Y |
---|---|
1 | null |
null | 1 |
如果您執行查詢 'SELECT * FROM t WHERE x = null',即使存在 'x' 為 'null' 的行,您也不會得到任何行。這是因為 'x = null' 總是計算為 'null',在 WHERE 子句中 'null' 為 false。
使用 'x is null' 進行精確的 NULL 值檢定
要正確測試 NULL 值,請使用 'x is null' 而不是 'x = null'。以下是一個將傳回所需行的範例:
<code class="language-sql">SELECT * FROM t WHERE x is null</code>
此查詢將傳回:
X | Y |
---|---|
null | 1 |
結論
理解 'x is null' 和 'x = null' 之間的差異對於有效的 SQL 程式設計至關重要。 'x = null' 將 'x' 與字面上的 NULL 值進行比較,並始終傳回 'null',而 'x is null' 專門測試 NULL 值的存在。在測試 NULL 值時,請始終使用 'x is null' 以獲得準確的結果。
以上是SQL NULL 比較:為什麼要使用「x IS NULL」而不是「x = NULL」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!