2

为什么这没有给出预期的结果?

DECLARE @1 char(90);
DECLARE @2 char(90);
DECLARE @3 char(90);


Set @1 = 'first part';
set @2 = 'second part';

set @3 = @1 + @2;

print  @3;  -- outputs 'first part'  where did 2nd part go?
4

2 回答 2

2

第一部分是char(90)用空格填充到固定大小 90。@3也是 90 个字符,因此仅包含@1. 切换到NVARCHAR(4000)char除非您知道自己在做什么,否则切勿使用。

于 2013-05-27T22:05:33.327 回答
1

您可以修剪@1@2查看更多结果(如果它适合 of ,则可能是所有结果CHAR(90)@3

SET @3 = RTRIM(@1) + RTRIM(@2);

此外,正如@usr 提到的,您可以做得@3更大以容纳@1@2. CHAR(180)会和他对NVARCHAR(或VARCHAR)的建议一样有效。

于 2013-05-27T22:11:39.773 回答