当我执行查询时
select * from Brands where int1 = 1 and iswebactive=0 and ESHOP_CODE=1
在Sql Server中,服务器返回2行。 当我执行查询
时select * from Brands where isnull(int1,0) = 1 and iswebactive=0 and ESHOP_CODE=1
Sql server返回超过2行。问题是有650000条记录,其中int1 = 1,但第一个查询只返回2行。 字段类型为:
int1 : int
iswebactive : tinyint
ESHOP_CODE : smallint
为什么会这样?
select int1,* from Brands where int1 = 1 and iswebactive=0 and ESHOP_CODE=1
(返回58行。)
select int1,* from Brands where isnull(int1,0) = 1 and iswebactive=0 and ESHOP_CODE=1
(返回16134行)
SQL Server的版本是2008 R2 Express。
我的问题是,当我使用isnull
函数(第二个查询)时,结果是正确的!
为什么第一个查询只返回58行?
答案 0 :(得分:0)
SQL Server中没有这样的Bug,至少对于这些类型的简单选择查询。通过细分和检查查看您的选择查询执行。或者您可能只是尝试使用列值问题
SELECT ISNULL(COL_NAME,0) FROM TABLE_NAME
为所有列和&看看结果。