【发布时间】:2013-10-28 07:27:04
【问题描述】:
表格:
ID AppType AppSubType Factor
1 SC CD 1.0000000000
2 SC CD 2.0000000000
3 SC NULL 3.0000000000
4 SC NULL 4.0000000000
查询:
declare @ast varchar(10)
set @ast = null
select *
from tbl
where AppType = 'SC' and AppSubType = ISNULL(@ast, AppSubType)
结果:
ID AppType AppSubType Factor
1 SC CD 1.0000000000
2 SC CD 2.0000000000
问题:
这个查询不应该返回所有 4 条记录,而不仅仅是前 2 条吗?
【问题讨论】:
-
看起来像 SQL。请为此添加标签。在您编辑标签时,请为您使用的任何数据库系统(例如 Oracle、SQL Server、MySQL 等)添加一个合适的标签
-
另外 - 你想做什么?它是以下一种还是两种:a) 返回与
@ast匹配或具有NULL的所有行,或者b) 如果@ast是NULL,则返回具有NULL的行。具体来说,当@ast不是NULL时,预期的行为是什么。 -
why is null not equal to null false 的可能副本(嗯,足够接近)。
-
查询在存储过程中。我想要的是,如果我不传递 AppSubType 参数(作为 null 传递),它应该返回所有 4 条记录(就像在 where 条件下不考虑 AppSubType)
标签: sql sql-server-2008 isnull