我有一个问题编号参数' @QNumber varchar(5)' (价值:Q8,Q9和Q10) Q8,Q9和Q10是实际的SQL列名,当我使用@Parameter动态传递值Q8,Q9和Q10时,计数总是相同的,即使它们不是。
declare @qnumber varchar(5) = 'Q8'
select total = count(*)
from table1
where @qnumber is not null
答案 0 :(得分:0)
在将列名称作为参数传递时,不能将其用作普通变量。动态格式化查询并执行它。
declare @qnumber varchar(5)
declare @sqlQuery nvarchar(1000)
set @qnumber='Q8'
select total=count(*) from table1 where @qnumber is not null
set @sqlQuery = N'SELECT total=count(*) from table1 where ' + @qnumber + ' is not null'
exec (@sqlQuery)
答案 1 :(得分:0)
这可能有效:
DECLARE @qnumber varchar(5) = 'Q8'
DECLARE @sqlQuery NVARCHAR(500) =
'select total = count(*) from table1 where' + @qnumber +' is not null'
EXEC ( @sqlQuery )
答案 2 :(得分:0)
SQL Server不接受表名或列名作为参数。如果您尝试使用sp_executesql。
上阅读的动态参数