我有一个简单的查询,返回产品列表。
SELECT Model, CategoryID
FROM Products
WHERE (Model = '010-00749-01')
这会返回什么?010-00749-01 00000000-0000-0000-0000-000000000000
010-00749-01 NULL
哪个是正确的,我只想要CategoryID不是“00000000-0000-0000-0000-000000000000”的产品,所以我有
SELECT Model, CategoryID
FROM Products
WHERE (Model = '010-00749-01')
AND (CategoryID <> '00000000-0000-0000-0000-000000000000')
但是这样返回的结果为空。所以我将查询更改为
SELECT Model, CategoryID
FROM Products
WHERE (Model = '010-00749-01')
AND ((CategoryID <> '00000000-0000-0000-0000-000000000000') OR (CategoryID IS NULL))
哪个会返回预期结果
010-00749-01 NULL
有人能给我解释一下这种行为吗? MS SQL Server 2008