为什么我的sqlserver程序无法输出%

时间:2017-10-30 09:49:41

标签: sql sql-server tsql

我在下面有一个sql语句,但它不起作用。错误消息msg是“关键字'AS'附近的语法不正确。”。我发现当我删除'%'时,它可以正常工作,但我需要在这个sql中输出'%',有人可以给我一些建议吗?

declare @per varchar(10) = '0.00%'
set @str = 'select ' + @per + ' AS ColumnA from #TempSui' ;
exec (@str)

3 个答案:

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

瞧!没问题。并且,您的代码更安全,也可能更高效(无需在每次运行时重新编译)。