如何排除不等于运算符的 NULL?
How can I exclude NULL of not equal operator?
在这部分查询中:
. . . WHERE col <> 10
它匹配除 10
和 NULL
之外的所有内容。虽然我想匹配除 10
之外的所有内容。那么我怎样才能排除其中的 NULL
?
问题是条件 col != 10
(在 MySQL 中)意味着 "row where col
has a value that is not 10"。 NULL
不是一个值,因此 NULL
行不匹配。如果是,您可能会遇到 NULL
级联到您逻辑的其他部分的问题,因为它们不使用与值相同的相等逻辑。
据我了解,在两种情况下 (col IS NULL OR col != 10
) 执行此操作是正确的方法,因为根据 MySQL 逻辑,您要求的是两个不同的东西。 "rows where col
has a value that is not 10, or rows where col
has no value".
这可以用于 MySQL、
...WHERE IFNULL(col,0) <> 10
如果 col 的值为 NULL
,则 IFNULL(col,0)
会将值转换为 '0'
并执行比较。因此,您将获得除 10
.
之外的所有记录
试试这个
....col <> 10 或 col IS NULL
对于空值
在这部分查询中:
. . . WHERE col <> 10
它匹配除 10
和 NULL
之外的所有内容。虽然我想匹配除 10
之外的所有内容。那么我怎样才能排除其中的 NULL
?
问题是条件 col != 10
(在 MySQL 中)意味着 "row where col
has a value that is not 10"。 NULL
不是一个值,因此 NULL
行不匹配。如果是,您可能会遇到 NULL
级联到您逻辑的其他部分的问题,因为它们不使用与值相同的相等逻辑。
据我了解,在两种情况下 (col IS NULL OR col != 10
) 执行此操作是正确的方法,因为根据 MySQL 逻辑,您要求的是两个不同的东西。 "rows where col
has a value that is not 10, or rows where col
has no value".
这可以用于 MySQL、
...WHERE IFNULL(col,0) <> 10
如果 col 的值为 NULL
,则 IFNULL(col,0)
会将值转换为 '0'
并执行比较。因此,您将获得除 10
.
试试这个 ....col <> 10 或 col IS NULL
对于空值