关于动态存储过程的问题

本人新手,编写了下面的程序,大神们估计一看就懂,但是在执行的时候总是报如下的错误,请大神们提示一下。

 begin
declare @sql1 nvarchar(max)
declare @char_table varchar(30)
declare @MacNo varchar(20)
declare @var_table varchar(30)
declare @T1 datetime
declare @T2 datetime
set @var_table = '制造一部'
set @MacNo = '1#' 
if  @var_table = '制造一部'
    set @char_table = 'CG_INFO_ONE'
else
    set @char_table = 'CG_INFO_TWO'
set @sql1 = 'select TRADEMARK as 品牌, MACHINE_NAME from ' + @char_table + ' where MACHINE_NAME  =' +@MacNo
print @sql1
exec sp_executesql @sql1
end

执行后的提示为:select TRADEMARK as 品牌, MACHINE_NAME from CG_INFO_ONE where MACHINE_NAME =1#
消息 102,级别 15,状态 1,第 1 行
“#”附近有语法错误。

我找了很久始终找不到原因,谢谢。

#可能是个特殊字符,可能需要加个\。
或把#单独在改成其他字母。

需要在@MacNo两边加上引号
= ''' +@MacNo + ''''

对的,字符串要加‘’将内容括起来。

试着将字符串加个双引号 字符串拼接应该要加引号的