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