首頁 > 資料庫 > mysql教程 > MySQL IN 運算子和 Null 值:為什麼要排除具有 Null 錯誤的行?

MySQL IN 運算子和 Null 值:為什麼要排除具有 Null 錯誤的行?

Patricia Arquette
發布: 2024-10-23 17:43:02
原創
815 人瀏覽過

MySQL IN Operator and Null Values: Why Are Rows with Null Errors Excluded?

MySQL IN 運算子和空值

在MySQL 中,IN 運算子用於檢查給定值是否與指定範圍內的任何值匹配列表。但是,當使用帶有 null 值的 IN 運算子時,可能會發生意外行為。

為什麼排除 NULL 值

MySQL IN 運算子回傳一個布林結果(TRUE 或錯誤的)。將非空值與 null 進行比較時,結果始終為 FALSE。因此,當使用 IN 檢查某個值是否不等於清單中包含 null 的任何值時,所有具有 null 值的行都會從結果中排除。

修復問題

要在結果中包含空值,可以使用以下選項:

  1. COALESCE 函數: COALESCE 函數可以用指定的預設值來取代空值。使用此函數,查詢可以修改為:
Error = COALESCE(Error, '') NOT IN ('Timeout','Connection Error');
登入後複製
  1. OR 運算子: OR 運算子可用於檢查是否有特定的錯誤程式碼且不存在空錯誤值。因此,查詢可以重寫為:
Error IS NULL OR Error NOT IN ('Timeout','Connection Error');
登入後複製
  1. CASE 語句: CASE 語句可用於評估多個條件並根據條件傳回特定值結果。在這種情況下,它可用於建立布林表達式,該表達式對於具有非空錯誤的行傳回 TRUE。查詢可以修改為:
CASE WHEN Error IS NULL THEN 1
ELSE Error NOT IN ('Timeout','Connection Error') THEN 1
END = 1
登入後複製
  1. JOIN 子查詢: JOIN 子查詢可用於從多個表中檢索數據,並根據常見情況。此方法可以確保不排除存在null 錯誤的行:
SELECT t1.*
FROM Table1 t1
LEFT JOIN (
    SELECT Error
    FROM ErrorTable
    WHERE Error IN ('Timeout')
) t2 ON t1.Error = t2.Error;
登入後複製

結論

當對null 值使用IN 運算子時,這一點很算重要了解該運算子將null 視為特殊值。要在結果中包含空值,必須採用額外的條件或技術,例如上面提到的那些。

以上是MySQL IN 運算子和 Null 值:為什麼要排除具有 Null 錯誤的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板