sql - 在where子句中比较smallint时遇到问题

标签 sql t-sql sql-server-2000

我有一个表,其中有一个名为 status 的列,其类型为smallint,并接受 null。 SQL Server 2000。

我的数据在该字段中大部分包含 2,但也包含 0 和 null。

当我这样做的时候

select *
from table
 where status <> 2

我没有获得所有正确的记录(其中状态为 null 或 0)。知道为什么会发生这种情况以及如何纠正吗? <> 不应该给我除 2 之外的所有内容吗?

最佳答案

NULL 测试不匹配任何算术比较。

使用

where status <> 2 OR status is null

关于sql - 在where子句中比较smallint时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5834578/

相关文章:

MySQL 说 "Table ' 数据库.表'不存在”

SQL,从两个表中选择而不获取所有行

sql-server - 查询保留最新的非零值

sql - 按一列对重复项进行分组,但显示另一列

sql-server - Sql查询-如何获取某行第一次获得某个值的时间

sql - 如何选择值列

javascript - 任何 Javascript/Jquery 库来验证 SQL 语句?

sql - 如何在 LIKE 过滤器中使用下划线字符给我一列的所有结果

tsql - 为什么这个 SQL CAST 不起作用?

SQL Server URL 解码