首頁 >資料庫 >mysql教程 >SQL NULL 相等:何時使用 IS NULL 與 = NULL?

SQL NULL 相等:何時使用 IS NULL 與 = NULL?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-11 20:32:42955瀏覽

SQL NULL Equality: When to Use IS NULL vs. = NULL?

SQL NULL 值比較的悖論:區分 IS NULL 和 = NULL

在 SQL 領域,NULL 值的概念常常給開發者帶來挑戰。其中一個難題就是使用 IS NULL 和 = NULL 運算子比較 NULL 值時。儘管它們看起來很相似,但它們的結果卻大相徑庭,讓許多人感到困惑。

理解差異

  • = NULL 的結果為 unknown(未知),表示三值邏輯。但是,在 WHERE 子句中,此結果被視為 false(假),並將結果集中具有 NULL 值的行排除在外。
  • IS NULL 明確檢查 NULL 值,只有當值確實是 NULL 時才傳回 true(真)。

何時使用每個運算符

鑑於它們不同的行為:

  • 當您想要故意搜尋未知值時,使用 = NULL。不建議用於一般比較,因為它可能導致意外結果。
  • 當您需要專門檢查 NULL 值時,使用 IS NULL。這是處理 SQL 中 NULL 比較的首選方法。

範例

考慮以下表格:

<code>| id | name |
|---|---|
| 1  | John |
| 2  | NULL |
| 3  | Mary |</code>
  • 查詢 1:
<code>SELECT * FROM table WHERE name = NULL;</code>

結果:不回傳任何行,因為 = NULL 將 NULL 視為 false。

  • 查詢 2:
<code>SELECT * FROM table WHERE name IS NULL;</code>

結果:傳回 id 為 2 的一行,正確辨識了 NULL 值。

以上是SQL NULL 相等:何時使用 IS NULL 與 = NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn