我有以下问题:
Declare @var nvarchar(100)
SET @var = 'ID,Name'
Declare @var2 nvarchar(100)
SET @var2='ID'
select concat(@var) FROM Test
select concat(@var2) FROM Tes
我有一个select语句,其中我有一个变量,其中列是从表中获取的。这个查询实际上是在动态sql中,但是通过上面的例子你可以得到它。 我必须连接变量然后转换它。但我的问题是我不知道therae是变量中的一个值还是几个。当我尝试用一个值连接变量时,我收到错误。如果有多个值,我如何检查select语句,所以我知道我可以连接它?
答案 0 :(得分:0)
呃,你已经定义了一个常量字符串,而不是列的列表。如果您需要列的列表,则需要使用var property1 = myArray[0].Property1;
var myRow = DbContext.myTable.Single(d => d.Property1 == property1);
,最好使用exec
:
sp_executesql
注意:因为Declare @var nvarchar(100);
set @var = 'ID,Name';
declare @sql nvarchar(max);
set @sql = 'select concat(@cols) from test';
set @sql = replace(@sql, '@cols', @var);
exec sp_executesql @sql;
至少需要两个参数,所以如果您希望它只在一列上工作,则可以包含一个空字符串:
concat()