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中文网其他相关文章!