sql server高手看下

来源:百度知道 编辑:UC知道 时间:2024/06/20 11:22:48
Set @sTmp=@sTmp+'Sum(Case When Color='''+@Color+''' then Num else 0 end) As '+@Color+','

这是一个动态SQL 动态SQL里 两个单引号等于一个单引号 那为什么前面的@Color 用的是六个单引号 而as后面的是两个 这是为什么 ,请高手讲下什么时候该用两个单引号 什么时候该用一个 谢谢!

用两个是因为查询语句中需要一个单引号,例如When Color='red',而在动态SQL里一个单引号是表示字符串,为了对字符串中的单引号转义,因此在字符串中使用两个单引号表示一个单引号.所以应该这样理解
'Sum(Case When Color='' '+@Color+' '' 如果@Color=red,则对应的字符串为
Sum(Case When Color='red'

应该是这样吧:
Set @sTmp=@sTmp+'Sum(Case When Color=’”+@Color+”‘ then Num else 0 end) As '+@Color+','

为什么前面的@Color 用的是六个单引号---->
那不是六个单引号吧?外层是一对双引号,里面是一对单引号,这是根据引号配对原则写出来的,而且不管是单还是双引号,一般是成双用的,不会只用一个

乱七八糟 没看懂