【发布时间】:2012-07-04 12:24:55
【问题描述】:
我有一张这样的桌子
ID Name IsDeleted
1 Yogesh Null
2 Goldy 1
现在当我运行这个查询时
select *
from tableName
where IsDeleted <> 1
我应该得到ID 1 记录,但我没有得到它,
但是当我运行这个
select *
from tableName
where IsDeleted is null
我得到ID 1 记录,
为什么我会面临这种行为?
NULL <> 1 不是 SQL 中的真实语句吗??
IsDeleted 是 bit 类型字段,带有 Allow Null true
【问题讨论】:
-
NULL表示“无值”,并且在与布尔比较一起使用时始终需要特殊处理。它不会包含在您的<>not-equal 中,除非您还检查了IS NULL。 -
只是强调:这不仅适用于 ,而且适用于所有其他运算符 - 、=、in、between、>、
-
@FrankSchmitt,除了
IS NULL和IS NOT NULL之外的所有操作员,当然... ;) -
@Lucero Argl,忘了这些。你是对的,当然:-)
标签: sql sql-server-2012