我在SQL server中有以下表(Table_1
):
表中有以下值。
我正在使用以下查询来获取没有'Thakker'作为LastName
的记录。
SELECT [id]
,[FirstName]
,[LastName]
FROM [dbo].[Table_1] WHERE LastName <> 'Thakker'
但它只让我回到第三排。我期待它应该让我回到第二个&amp;第三行。
为什么它没有返回第二排。 ?
答案 0 :(得分:4)
请添加ISNULL
检查列LastName
以在select中包含NULL值。
SELECT [id]
,[FirstName]
,[LastName]
FROM [dbo].[Table_1]
WHERE ISNULL(LastName,'') <> 'Thakker'
或使用CASE
SELECT [id]
,[FirstName]
,[LastName]
FROM [dbo].[Table_1]
WHERE 1=CASE WHEN LastName='Thakker' THEN 0 ELSE 1 END
答案 1 :(得分:3)
您可以使用此查询。
SELECT [id],
[FirstName],
[LastName],
FROM [dbo].[Table_1] WHERE LastName <> 'Thakker' OR LastName IS NULL
根据您的问题, <>
运算符不会返回NULL值行,因为
<>
运算符会与这两个值进行比较,因此为了进行比较,应该有两个值,但
NULL
不是值。它只是一个占位符,表明没有值存在。即使NULL
也不等于NULL
。这就是为什么SQL对于这种情况有IS NULL
和IS NOT NULL
的原因。