日期:2014-05-17  浏览次数:20452 次

字符串串联的问题,似乎很简单,但一直未解决,请高手进来一看!
declare @s varchar(50)
declare @s1 varchar(50)
set @s=char(98)+char(76)+char(135)
set @s1=char(98)
set @s1=@s1+char(76)
set @s1=@s1+char(135)
print @s
print @s1
输出来的结果完全不一样,为什么?请指点!

------解决方案--------------------
直接执行,没看出有什么不同...
declare @s varchar(50)
declare @s1 varchar(50)
set @s=char(98)+char(76)+char(135)
set @s1=char(98)
set @s1=@s1+char(76)
set @s1=@s1+char(135)
print @s
print @s1

/*
bL?
bL?
*/

------解决方案--------------------
执行后打印了空字符串,什么也没看到
------解决方案--------------------
奇怪,还是没问题
declare @s varchar(50)
declare @s1 varchar(50)
set @s=char(98)+char(137)+char(76)+char(137)+char(98)+char(152)
set @s1=char(98)
set @s1=@s1+char(137)
set @s1=@s1+char(76)
set @s1=@s1+char(137)
set @s1=@s1+char(98)
set @s1=@s1+char(152)
print @s -- b乱码
print @s1 -- bLb

/*
b‰L‰b?
b‰L‰b?
*/

------解决方案--------------------
上面是2014的,这个是2008R2的,都没问题哦
------解决方案--------------------
没2000的环境.....
------解决方案--------------------
想找都不知道哪里找了
------解决方案--------------------
就算真的2000不一样,也说得过去啊,2005开始sqlserver大改过,很有可能这里就被改动过。
------解决方案--------------------

08r2的结果:
一种,char(135) 显示问号,另一种空白



declare @s varchar(50)
declare @s1 varchar(50)
set @s=char(98)+char(99)+char(100)
set @s1=char(98)
set @s1=@s1+char(99)
set @s1=@s1+char(100)
print @s
print @s1


declare @a varchar(50)
declare @b varchar(50)