我有一个看似非常简单的问题(可能是......),但我无法让它发挥作用。
变量'名称'在数据集'列表'长度为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....;
答案 0 :(得分:14)
实际上,有一个选项,TRIMMED,可以做你想做的事。
proc sql noprint;
select name into :nameselected TRIMMED
from list
where id=2;
quit;
另外,PROC SQL
与QUIT;
结束,而不是RUN;
。
答案 1 :(得分:6)
如果指定分隔符,则可以使用:
proc sql;
select trim(name) into :nameselected separated by ''
from list
where id=2;
run;