为什么这没有给出预期的结果?
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?
为什么这没有给出预期的结果?
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?
第一部分是char(90)用空格填充到固定大小 90。@3也是 90 个字符,因此仅包含@1. 切换到NVARCHAR(4000)。char除非您知道自己在做什么,否则切勿使用。
您可以修剪@1并@2查看更多结果(如果它适合 of ,则可能是所有结果CHAR(90))@3。
SET @3 = RTRIM(@1) + RTRIM(@2);
此外,正如@usr 提到的,您可以做得@3更大以容纳@1和@2. CHAR(180)会和他对NVARCHAR(或VARCHAR)的建议一样有效。