SQL 语句 - Select 其中 * 不等于

SQL Statement - Select Where * Not equal to

我正在尝试提取列“Drive_Status”不等于“成功”的所有数据,如有任何帮助,将不胜感激。

 SELECT * FROM [Main$] WHERE (Drive_Status <> 'Success')

上述语句的问题是“Drive_Status”列中为 Null 或标记为“错误”的数据未返回。

我使用的数据库是Excel数据库

NULL is not a value 所以你不能使用 <> 来检查 NULL.

改为尝试以下操作:

SELECT * FROM [Main$] WHERE Drive_Status <> 'Success' OR Drive_Status IS NULL

如果您想将 NULL 值包含为“不等于”,那么您需要一个 NULL 安全运算符。否则,<> returns NULLWHERE 子句中被视为“假”。

您还没有指定您的数据库,但标准 SQL 提供了一个:

where Drive_Status is distinct from 'Success'

如果 Drive_StatusNULL,那么这个 returns TRUE 而不是 NULL.

并不是所有的数据库都支持这个。有些人使用 <=> 作为 NULL-安全相等(即 NULL <=> NULL 计算为真)。在这些中,您可以使用:

where not Drive_Status <=> 'Success'

而在其他方面,您需要更加具体:

where Drive_Status <> 'Success' or Drive_Status is null