我用<>
和!=
來測試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