我用<>
和!=
来测试SQL中的NOT EQUAL TO
。我尝试了下面的语法,除IS NOT NULL
之外都失败了。SQL正确检查不等于NULL
什么是检查NOT EQUAL with NULL
declare @p1 int
set @p1=null
SELECT COUNT(*)
FROM Emp_Details
WHERE [source_id] IS NOT null -- gives 1289 records
SELECT COUNT(*)
FROM Emp_Details
WHERE [source_id] != null -- gives 0 records
SELECT COUNT(*)
FROM Emp_Details
WHERE [source_id] <> null -- gives 0 records
SELECT COUNT(*)
FROM Emp_Details
WHERE [source_id] <> @p1 -- gives 0 records
从不对我执行以下条件的正确方式,即使我通过0 or 1 for @p1
IF COALESCE (@p1, NULL) != NULL
BEGIN
DELETE
FROM @EmpDetailTable
WHERE [source_id] != @p1
END
注:一些source_id
数值是NULL
显然是给你的结果;) – Scoregraphic
“不是NULL”或“IS NULL”是空值检查 – Rodion
NULL值是没有值。 '<>'和'!='需要一个值,所以当与'NULL'比较时,它们评估为'undefined'(false)。有关更多详细信息,请查看[处理空值](http://msdn.microsoft.com/zh-cn/library/ms172138(v = vs.110).aspx)。 – wdosanjos