日期:2014-05-19  浏览次数:20526 次

奇怪的逗号~~~
奇怪的逗号:
use   pubs  
go    
declare   @s   varchar(8000)
select   @s   = ', '+     title_id   from   titles  
print   @s  
结果为:,BU2075

先把逗号赋给字符型变量的话:
use   pubs  
go    
declare   @s   varchar(8000)
set   @s   =   ', '  
select   @s   =@s+     title_id   from   titles  
print   @s  
结果为:,PC1035PS1372BU1111PS7777TC4203PS2091PS2106PC9999TC3218PS3333PC8888MC2222BU7832TC7777BU1032MC3021MC3026BU2075

请问为什么?

------解决方案--------------------
第一个SQL是取最后一行的title_id,并前置逗号

第二个SQL是取所有title_id的连接在一起,并前置逗号


语句不同,返回结果当然不同
------解决方案--------------------
楼上老兄解释的很详细了,第二种执行的方式与你想得方法是不一样的,主要是sql语法与其他的语法不动导致的!
------解决方案--------------------
学习
------解决方案--------------------
第一句: ', '和title_id中最后一个值连接起来

第二句: ', '和title_id中所有值连接起来

------解决方案--------------------
select @s =@s+ title_id from titles
=============
这句其实是一个循环,他执行时,会循环逐条执行记录集

比如表:
title_id
1
2
3
4
=============
第一次时
select @s =@s+ title_id from titles
@s = ', ' + 1
第二次时
@s = @s + 2 既: ', ' + 1 + 2

所以结果是不一样的