MySQL IN 運算子和空值
在MySQL 中,IN 運算子用於檢查給定值是否與指定範圍內的任何值匹配列表。但是,當使用帶有 null 值的 IN 運算子時,可能會發生意外行為。
為什麼排除 NULL 值
MySQL IN 運算子回傳一個布林結果(TRUE 或錯誤的)。將非空值與 null 進行比較時,結果始終為 FALSE。因此,當使用 IN 檢查某個值是否不等於清單中包含 null 的任何值時,所有具有 null 值的行都會從結果中排除。
修復問題
要在結果中包含空值,可以使用以下選項:
Error = COALESCE(Error, '') NOT IN ('Timeout','Connection Error');
Error IS NULL OR Error NOT IN ('Timeout','Connection Error');
CASE WHEN Error IS NULL THEN 1 ELSE Error NOT IN ('Timeout','Connection Error') THEN 1 END = 1
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中文網其他相關文章!