2013-02-26 61 views
3

在Sybase上,我收到了非常简单的SQL意外结果。在Sybase SQL中连接简单字符串的意外结果

declare @mystring char(30) 

select @mystring = 'abc' 

select 'mystring = ' + @mystring 

select @mystring = @mystring + 'xyz' 

select 'mystring = ' + @mystring 

这将返回:

mystring = abc       
mystring = abc 

为什么不是最后选择回归 'abcxyz'?

感谢

鲍勃

回答

3

我怀疑,这是因为您已声明@mystring为​​和All CHAR values are blank padded up to max-length

声明为varchar(30)会做的伎俩:

declare @mystring varchar(30) 

select @mystring = 'abc' 

select 'mystring = ' + @mystring 

SELECT @mystring = @mystring + 'xyz' 

select 'mystring = ' + @mystring 
+0

我不不知道Sybase,但从你说的话来看,在正确的地方使用TRIM()将是另一种方法。一些SQL方言也有一个特殊的连接运算符,它将字符串“压缩”在一起 – 2013-02-26 17:21:10