我在下面有一个sql语句,但它不起作用。错误消息msg是“关键字'AS'附近的语法不正确。”。我发现当我删除'%'时,它可以正常工作,但我需要在这个sql中输出'%',有人可以给我一些建议吗?
declare @per varchar(10) = '0.00%'
set @str = 'select ' + @per + ' AS ColumnA from #TempSui' ;
exec (@str)
答案 0 :(得分:2)
我想你只是错过了引号
declare @per varchar(10) = '0.00%'
set @str = 'select ''' + @per + ''' AS ColumnA from #TempSui' ;
exec (@str)
在调试动态TSQL时使用PRINT
并不是一个坏主意:
print @str
会给:
select '0.00%' AS ColumnA from #TempSui
答案 1 :(得分:2)
您执行的是:
select 0.00% AS ColumnA from #TempSui'
,您需要添加引号:
'select ' + QUOTENAME(@per, '''') + ' AS ColumnA from #TempSui'
答案 2 :(得分:2)
学习使用参数。然后你不会'有这个问题:
declare @per varchar(10) = '0.00%'
set @str = 'select @per AS ColumnA from #TempSui' ;
exec sp_executesql @str, N'@per varchar(10)', @per=@per;
瞧!没问题。并且,您的代码更安全,也可能更高效(无需在每次运行时重新编译)。