我正在尝试在SQL 2008中使用COALESCE
创建一个参数化的where语句,我有一个例子:
Select *
From Receipts
Where Receipts.FunctionCode = COALESCE(@FunCode, Receipts.FunctionCode)
希望如果我在@FunCode中传入NULL,它将拉出所有7050条记录。然而它只能拉回236条记录,就好像它在哪里: Receipts.FunctionCode = Receipts.FunctionCode
有人可以解释一下我的逻辑错误吗?对我来说,这个where语句应该总是100%回到数据库
答案 0 :(得分:3)
这是由NULL
列中显示的FunctionCode
值导致的。这将使用FunctionCode
上创建的索引(如果有的话)
Select *
From Receipts
Where Receipts.FunctionCode = @FunCode or @FunCode IS NULL