SQL Where逻辑参数化Where
我试图在SQL 2008中使用SQL Where逻辑参数化Where,sql,sql-server,sqlparameter,Sql,Sql Server,Sqlparameter,我试图在SQL 2008中使用COALESCE创建一个参数化where语句,示例如下: Select * From Receipts Where Receipts.FunctionCode = COALESCE(@FunCode, Receipts.FunctionCode) 希望如果我在@FunCode中传入NULL,它将提取所有7050条记录。然而,它只收回了236条记录,就好像这条记录在哪里一样: 其中Receipts.FunctionCode=Receipts.FunctionCo
COALESCE
创建一个参数化where语句,示例如下:
Select *
From Receipts
Where Receipts.FunctionCode = COALESCE(@FunCode, Receipts.FunctionCode)
希望如果我在@FunCode中传入NULL,它将提取所有7050条记录。然而,它只收回了236条记录,就好像这条记录在哪里一样:
其中Receipts.FunctionCode=Receipts.FunctionCode
有人能解释一下我的逻辑错在哪里吗?对我来说,由于
FunctionCode
列中存在的NULL
值,这个where语句应该总是100%回拉数据库。这将使用在FunctionCode
上创建的索引(如果有)
Select *
From Receipts
Where Receipts.FunctionCode = @FunCode or @FunCode IS NULL
那么,
Receipts.FunctionCode
的值是否为NULL
?NULL=NULL
在SQL中不是真的。