SQL server中的“”不返回空值行
我在SQL server中有下表_1: 表中有以下值 我使用下面的查询来获取没有“Thakker”作为姓氏的记录 但这只是第三排。我希望它会返回第二行和第三行 为什么它不返回第二排 请为列LastName添加ISNULL检查,以在select中包含NULL值SQL server中的“”不返回空值行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在SQL server中有下表_1: 表中有以下值 我使用下面的查询来获取没有“Thakker”作为姓氏的记录 但这只是第三排。我希望它会返回第二行和第三行 为什么它不返回第二排 请为列LastName添加ISNULL检查,以在select中包含NULL值 SELECT [id] ,[FirstName] ,[LastName] FROM [dbo].[Table_1] WHERE ISNULL(LastName,'') <> 'Thakker' 您可以
SELECT [id]
,[FirstName]
,[LastName]
FROM [dbo].[Table_1]
WHERE ISNULL(LastName,'') <> 'Thakker'
您可以使用此查询
SELECT [id],
[FirstName],
[LastName],
FROM [dbo].[Table_1] WHERE LastName <> 'Thakker' OR LastName IS NULL
根据您的问题,运算符不返回空值行,因为
运算符对两个值进行比较,所以要进行比较,应该有两个值,但
NULL不是一个值。它只是一个占位符,表示不存在任何值。即使NULL也不等于NULL。这就是为什么SQL在这种情况下是空的,而不是空的 有没有其他方法可以在不检查每一行的姓氏的ISNULL的情况下也得到NULL值的行?@JigneshThakker使用case语句,请检查编辑后的答案。ISNULL如何处理索引?我想说,您的第一个解决方案将阻止索引的使用…为什么它不返回第二行?
SELECT [id]
,[FirstName]
,[LastName]
FROM [dbo].[Table_1]
WHERE 1=CASE WHEN LastName='Thakker' THEN 0 ELSE 1 END
SELECT [id],
[FirstName],
[LastName],
FROM [dbo].[Table_1] WHERE LastName <> 'Thakker' OR LastName IS NULL