SAS Proc SQL修剪不工作?

SAS Proc SQL修剪不工作?,sas,trim,proc-sql,Sas,Trim,Proc Sql,我有一个问题看起来很简单(可能是…),但我无法让它工作 数据集“列表”中的变量“名称”的长度为20。我希望有条件地将值选择到宏变量中,但通常所需的值小于指定的长度。这会在末尾留下尾随空格,因为它们会中断宏变量的未来调用,所以我不能使用尾随空格 我尝试过修剪、压缩、btrim、left(修剪和其他解决方案,但似乎没有什么能满足我的需求(即没有空格的“Joe”)。这似乎应该比实际情况更容易……帮助 data list; length id 8 name $20; input id n

我有一个问题看起来很简单(可能是…),但我无法让它工作

数据集“列表”中的变量“名称”的长度为20。我希望有条件地将值选择到宏变量中,但通常所需的值小于指定的长度。这会在末尾留下尾随空格,因为它们会中断宏变量的未来调用,所以我不能使用尾随空格

我尝试过修剪、压缩、btrim、left(修剪和其他解决方案,但似乎没有什么能满足我的需求(即没有空格的“Joe”)。这似乎应该比实际情况更容易……帮助

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....;

如果指定分隔符,则该选项有效:

proc sql;
    select trim(name) into :nameselected separated by ''
    from list
    where id=2;
run;

事实上,有一个选项,修剪,做你想做的

proc sql noprint;
    select name into :nameselected TRIMMED
    from list
    where id=2;
quit;

另外,用
QUIT;
结束
PROC SQL
,而不是
RUN;

是的,就是这样。谢谢你,杰夫。看起来我所做的应该是有效的,不过……有趣的是,分隔符甚至不必为空。@pyll出于某种原因,他们选择用separated by来修剪默认值,否则不使用rim默认值。我没有I“为什么?”杰夫有一个有效的答案,但这个更干净。谢谢。我以前从未见过这个。酷。+1。