这个问题让我抓狂.在SAS中,当我想要连接字符串时,将不会在输入中使用将分配给结果的变量.
DATA test1;
LENGTH x $20;
x = "a";
x = x || "b";
RUN;
Run Code Online (Sandbox Code Playgroud)
结果:x ="a";
DATA test2;
LENGTH x $20;
y = "a";
x = y || "b";
RUN;
Run Code Online (Sandbox Code Playgroud)
结果:x ="ab";
DATA test3;
LENGTH x $20;
x = "a";
y = x;
x = y || "b";
RUN;
Run Code Online (Sandbox Code Playgroud)
结果:x ="a";
最后一个是如此奇怪.x甚至没有直接参与concat.
这根本不符合逻辑.因为1)你可以用这种方式做其他操作,例如transtrn,substr.2)SAS不提供任何警告信息.
为什么?
这是因为X的长度最初设置为20,所以它有19个尾随空白.如果添加b,则没有空间,因为尾随空白.在cat操作符之前修剪x或使用catt.您可以使用lengthc查看字符变量的长度.
DATA test1;
LENGTH x $20;
x = "a";
len=lengthc(x);
x = trim(x) || "b";
*x = catt(x, b);
RUN;
proc print data=test1;
run;
Run Code Online (Sandbox Code Playgroud)