如何在带有变量的SQL字符串查询中添加自定义列

时间:2017-08-22 09:56:50

标签: sql sql-server string default

我在sql中使用字符串查询并使用Execute方法执行它。我必须添加一个默认值的附加列。该默认值包含在变量中。当我在查询字符串中添加该默认值列并执行它时,我收到一个错误"无效的列名' dafaultValue' &#34 ;. 还有其他解决办法吗? 这是我的代码:

Declare @variable Varchar(Max);
Declare @variableQuery Varchar(Max);
set @variable = 'Test';
set @variableQuery = 'select '+@variable+' as dest ,* from myTable ';

execute (@variableQuery);

2 个答案:

答案 0 :(得分:0)

您的问题是您需要将变量包含在单引号中:

set     @variableQuery = 'select '+ ''''+@variable+'''' +' as dest ,* from myTable';

否则它认为它是表中的列名,它不是,因此是错误。

答案 1 :(得分:0)

我强烈建议您学会使用sp_executesql并传入参数。这比查询字符串更安全:

Declare @variable Varchar(Max);
Declare @variableQuery Varchar(Max);
set @variable = 'Test';

set @variableQuery = 'select @variable as dest, t.* from myTable t';

exec sp_executesql @variableQuery,
                   N'@variable varchar(max)',
                   @variable = @variable;

此方法还允许您从查询中传回值,因此对于处理查询,它比exec更强大。

查询变量通常被声明为nvarchar(),只是为了尽可能通用。