TSQL使用@parameter作为SQL列

时间:2017-04-14 04:20:18

标签: sql-server tsql

我有一个问题编号参数' @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

3 个答案:

答案 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。

所有关于在https://www.mssqltips.com/sqlservertip/2981/using-parameters-for-sql-server-queries-and-stored-procedures/

上阅读的动态参数