SAS Proc SQL Trim 不工作?

SAS Proc SQL Trim not working?

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

数据集'list'中的变量'name'的长度为20,我希望有条件的将select值赋值到一个宏变量中,但往往想要的值小于分配的长度。这会在末尾留下尾随空白,这是我不能拥有的,因为它们会破坏宏变量的未来调用。

我已经尝试了 trim、压缩、btrim、left(trim 和其他解决方案,但似乎没有任何东西能满足我的需求('Joe'没有空格)。这看起来应该比实际更容易.....帮助。

data list;
    length id 8 name ;
    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;

实际上,有一个选项,TRIMMED,可以做你想做的事。

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

此外,PROC SQL 的结尾是 QUIT;,而不是 RUN;