动态SQL不理解解决思路

动态SQL不理解
declare @sql varchar(8000)     --声明一个变量
set @sql = 'select name as 姓名' 
select @sql = @sql + ' , max(case class_name when ''' + class_name+ ''' then score  else 0 end) ' + class_name+ '' 
from (select distinct class_name from Stu)  as a
--set @sql = @sql + ' from Stu group by fname' 
print @sql   --打印生成的sql
exec(@sql)   --执行该sql

对于这个when ''' + class_name+ ''' 的引号不理解啊,我觉得应该是select @sql = @sql + ' , max(case class_name when '+'‘' + class_name+ ''' +’ then score  else 0 end) ' 才对的啊,这个执行的原理是什么?
------解决思路----------------------
你所谓的才对,你可以试一下~~
居然还有其它形式的单引号或单撇号

在SQL字符串里两个单引号表示为一个单引号字符

具体你执行后,可以看消息里被print @sql打印出来的效果
------解决思路----------------------
为什么三个引号就够了
其实很简单 有两个是用来转义的。最终就是为了得到一个引号