SQL参数和值之间的区别

时间:2011-02-15 14:53:53

标签: sql-server-2008

很抱歉,如果我的标题有点误导,但不完全确定如何说出来。

为什么以下两个陈述之间存在差异:

SELECT * 
FROM tbl1 LEFT OUTER JOIN 
      tbl2 ON tbl1.num = tbl2.tbl1Num LEFT OUTER JOIN
      tbl3 ON tbl2.num = tbl3.tbl2Num
WHERE tbl2.intNum = 123 OR 123 = -1

AND

DECLARE @intNum int = 123
SELECT * 
FROM tbl1 LEFT OUTER JOIN 
      tbl2 ON tbl1.num = tbl2.tbl1Num LEFT OUTER JOIN
      tbl3 ON tbl2.num = tbl3.tbl2Num
WHERE tbl2.intNum = @intNum OR @intNum = -1

我们运行了上述两个查询,它实际上给了我们不同的结果?我们最终将其改为联盟以解决问题,但我真的很想了解为什么会发生这种情况。

提前致谢!

1 个答案:

答案 0 :(得分:2)

您缺少参数类型:

declare @intNum int = 123