Sql server SQL Server:静态选择与动态选择

Sql server SQL Server:静态选择与动态选择,sql-server,dynamic-programming,Sql Server,Dynamic Programming,从tableA中选择0可以正常工作,但在动态sql中不起作用。我怎样才能解决这个问题?在选择列时,我必须在动态sql中包含@zerocol select top 10 col1,col2,col3,0 from dbo.tableA declare @table_name varchar(40) declare @sqlstr VARCHAR(MAX) declare @zerocol varchar(20) set @table_name = 'dbo.tableA' set @zer

从tableA中选择0可以正常工作,但在动态sql中不起作用。我怎样才能解决这个问题?在选择列时,我必须在动态sql中包含@zerocol

select top 10 col1,col2,col3,0 
from dbo.tableA

declare @table_name varchar(40)
declare @sqlstr VARCHAR(MAX)
declare @zerocol varchar(20)

set @table_name = 'dbo.tableA' 
set @zerocol = 0
SELECT @sqlStr = ' ; WITH Tableinfo1 AS (SELECT col1, 
col2, 
col3,
['+ @zerocol +'] 

FROM ' + @table_name + ' ) 

SELECT top 10 * FROM Tableinfo1'

EXEC (@sqlstr)
试试这个

declare @table_name varchar(40)
declare @sqlstr VARCHAR(MAX)
declare @zerocol varchar(20)

set @table_name = 'dbo.tableA' 
set @zerocol = 0
SELECT @sqlStr = ' ; WITH Tableinfo1 AS (SELECT col1, 
col2, 
col3,
'+ @zerocol +' AS ZeroCol

FROM ' + @table_name + ' ) 

SELECT top 10 * FROM Tableinfo1'

EXEC (@sqlstr)

选择0不会执行您期望的操作。它在结果中使用值0,而不获取名为0的字段的值。表中是否有该名称的字段?不,表中不存在该字段,但我有大约1000个表。在某些表中它存在,而在某些表中它不存在。但是存在什么呢?是否要将0作为数字返回?不能从不存在字段的表中选择字段。您需要确定一种方法来判断哪个表中有这样一个字段,并调整查询,使其仅选择该表中存在的字段。我测试了上述查询,它工作正常,上面的sql没有问题。它返回[0]列。。。使用select@sqlstr打印sql语句。