我有一个看似非常简单的问题(可能是......),但我无法让它工作.
数据集"列表"中的变量"name"的长度为20.我希望有条件地将值选择为宏变量,但通常所需的值小于指定的长度.这会在最后留下尾随空白,这是我不能拥有的,因为它们会破坏宏变量的未来调用.
我已经尝试了修剪,压缩,btrim,左(修剪和其他解决方案,但似乎没有任何东西给我我想要的东西(这是'乔'没有空白).这看起来应该比它更容易...... .. 救命.
data list;
length id 8 name $20;
input id name $;
cards;
1 reallylongname
2 Joe
;
run;
proc sql;
select trim(name) into :nameselected
from list
where id=2;
run;
%put ....&nameselected....;
Run Code Online (Sandbox Code Playgroud)
Dom*_*azz 14
实际上,有一个选项,TRIMMED,可以做你想要的.
proc sql noprint;
select name into :nameselected TRIMMED
from list
where id=2;
quit;
Run Code Online (Sandbox Code Playgroud)
此外,最终PROC SQL用QUIT;,不是RUN;.
如果指定分隔符,它可以工作:
proc sql;
select trim(name) into :nameselected separated by ''
from list
where id=2;
run;
Run Code Online (Sandbox Code Playgroud)